TreeViewExtension.BindToVirtualData(TreeViewVirtualModeCreateChildrenMethod) Method
Allows creation of treeview nodes on demand (virtual mode).
Namespace: DevExpress.Web.Mvc
Assembly: DevExpress.Web.Mvc5.v24.2.dll
NuGet Package: DevExpress.Web.Mvc5
#Declaration
public TreeViewExtension BindToVirtualData(
TreeViewVirtualModeCreateChildrenMethod method
)
#Parameters
Name | Type | Description |
---|---|---|
method | Tree |
A delegate method of the Tree |
#Returns
Type | Description |
---|---|
Tree |
A Tree |
#Remarks
In addition to bound and unbound modes, the TreeView extension can operate in a Virtual Mode, which greatly reduces both the server load and start-up time when working with complex or dynamically created data. In virtual mode, a tree is created on demand. In this instance, child nodes are created and initialized when their parent node is expanded.
To implement a virtual mode for the TreeView extension, you should use a specifically parameterized BindToVirtualData method. The method’s parameter refers to the delegate method that can be declared as a static method within a model class. Within this delegate method, create a list of business objects that correspond to the child nodes owned by the processed node.
Note
The Tree
#Example
// Model (TreeViewVirtualModeHelper)
public class TreeViewVirtualModeHelper {
const string FileImageUrl = "~/Content/TreeView/FileSystem/file.png";
const string DirImageUrl = "~/Content/TreeView/FileSystem/directory.png";
static HttpRequest Request { get { return HttpContext.Current.Request; } }
public static void CreateChildren(TreeViewVirtualModeCreateChildrenEventArgs e) {
string parentNodePath = string.IsNullOrEmpty(e.NodeName) ? Request.MapPath("~/") : e.NodeName;
List<TreeViewVirtualNode> children = new List<TreeViewVirtualNode>();
if(Directory.Exists(parentNodePath)) {
foreach(string childPath in Directory.GetDirectories(parentNodePath)) {
string childDirName = Path.GetFileName(childPath);
if(IsSystemName(childDirName))
continue;
TreeViewVirtualNode childNode = new TreeViewVirtualNode(childPath, childDirName);
childNode.Image.Url = DirImageUrl;
children.Add(childNode);
}
foreach(string childPath in Directory.GetFiles(parentNodePath)) {
string childFileName = Path.GetFileName(childPath);
if(IsSystemName(childFileName))
continue;
TreeViewVirtualNode childNode = new TreeViewVirtualNode(childPath, childFileName);
childNode.IsLeaf = true;
childNode.Image.Url = FileImageUrl;
children.Add(childNode);
}
}
e.Children = children;
}
static bool IsSystemName(string name) {
name = name.ToLower();
return name.StartsWith("app_") || name == "bin" || name == "obj";
}
}