Here is a simple code example.
Markup code:
Code behind:
Custom provider:
Imports
Telerik.Web.UI.Widgets
Imports
Telerik.Web.UI
Public
Class
FileProvider
Inherits
FileSystemContentProvider
Public
Sub
New
(
ByVal
context
As
HttpContext,
ByVal
searchPatterns
As
String
(),
ByVal
viewPaths
As
String
(), _
ByVal
uploadPaths
As
String
(),
ByVal
deletePaths
As
String
(),
ByVal
selectedUrl
As
String
, _
ByVal
selectedItemTag
As
String
)
MyBase
.
New
(context, searchPatterns, viewPaths, uploadPaths, deletePaths, selectedUrl, selectedItemTag)
End
Sub
Private
Function
GetDirectoryRoot()
As
Telerik.Web.UI.Widgets.DirectoryItem
Dim
dir =
New
Telerik.Web.UI.Widgets.DirectoryItem
With
{.Name =
"/"
, .FullPath =
"/"
, .Files =
New
Telerik.Web.UI.Widgets.FileItem() {}}
Dim
childs
As
New
List(Of Telerik.Web.UI.Widgets.DirectoryItem)
childs.Add(
New
Telerik.Web.UI.Widgets.DirectoryItem
With
{.Name =
"1"
, .FullPath =
"/1"
})
childs.Add(
New
Telerik.Web.UI.Widgets.DirectoryItem
With
{.Name =
"2"
, .FullPath =
"/2"
})
childs.Add(
New
Telerik.Web.UI.Widgets.DirectoryItem
With
{.Name =
"3"
, .FullPath =
"/3"
})
dir.Directories = childs.ToArray
Return
dir
End
Function
Private
Function
GetDirectory1()
As
Telerik.Web.UI.Widgets.DirectoryItem
Return
New
Telerik.Web.UI.Widgets.DirectoryItem
With
{.Name =
"1"
, .FullPath =
"/1"
, .Directories =
New
Telerik.Web.UI.Widgets.DirectoryItem() {}, .Files =
New
Telerik.Web.UI.Widgets.FileItem() {}}
End
Function
Private
Function
GetDirectory2()
As
Telerik.Web.UI.Widgets.DirectoryItem
Dim
dir =
New
Telerik.Web.UI.Widgets.DirectoryItem
With
{.Name =
"2"
, .FullPath =
"/2"
, .Files =
New
Telerik.Web.UI.Widgets.FileItem() {}}
Dim
childs
As
New
List(Of Telerik.Web.UI.Widgets.DirectoryItem)
For
i = 0
To
2000
childs.Add(
New
Telerik.Web.UI.Widgets.DirectoryItem
With
{.Name = i.ToString, .FullPath =
"/2/"
& i})
Next
dir.Directories = childs.ToArray
Return
dir
End
Function
Private
Function
GetDirectory3()
As
Telerik.Web.UI.Widgets.DirectoryItem
Return
New
Telerik.Web.UI.Widgets.DirectoryItem
With
{.Name =
"3"
, .FullPath =
"/3"
, .Directories =
New
Telerik.Web.UI.Widgets.DirectoryItem() {}, .Files =
New
Telerik.Web.UI.Widgets.FileItem() {}}
End
Function
Public
Overrides
Function
ResolveRootDirectoryAsTree(
ByVal
path
As
String
)
As
Telerik.Web.UI.Widgets.DirectoryItem
Return
ResolveDirectory(path)
End
Function
Public
Overrides
Function
ResolveDirectory(
ByVal
path
As
String
)
As
Telerik.Web.UI.Widgets.DirectoryItem
Select
Case
path
Case
"/"
Return
GetDirectoryRoot()
Case
"/1"
Return
GetDirectory1()
Case
"/2"
Return
GetDirectory2()
Case
"/3"
Return
GetDirectory3()
Case
Else
Return
New
Telerik.Web.UI.Widgets.DirectoryItem
With
{.Name = path, .FullPath = path, .Directories =
New
Telerik.Web.UI.Widgets.DirectoryItem() {}, .Files =
New
Telerik.Web.UI.Widgets.FileItem() {}}
End
Select
End
Function
Public
Overrides
Function
GetPath(
ByVal
url
As
String
)
As
String
Return
url
End
Function
End
Class
Everything works fine with Firefox and Chrome, but with IE8 when I expand the folder "2" I get a script warning like this:
"---------------------------
Windows Internet Explorer
---------------------------
Stop running this script?
A script on this page is causing your web browser to run slowly.
If it continues to run, your computer might become
unresponsive.
---------------------------
Yes No
---------------------------"
And after the child nodes are loaded every action seems to have a little lag (e.g. click on the tree scroll).
P.S.: I just realized maybe this isn't the right forum for this issue. If this is the case, could you please move the thread to the FileExplorer forum?
All the best,
Santiago.