TreeViewVirtualNode Class
A virtual equivalent of the ASPxTreeView’s TreeViewNode object.
Namespace: DevExpress.Web
Assembly:
DevExpress.Web.v20.1.dll
NuGet Package:
DevExpress.Web
Declaration
public class TreeViewVirtualNode :
TreeViewNode,
ITreeViewVirtualNode
Public Class TreeViewVirtualNode
Inherits TreeViewNode
Implements ITreeViewVirtualNode
In virtual mode nodes should be created in the VirtualModeCreateChildren event handler. If a node has no children in virtual mode, set the TreeViewVirtualNode.IsLeaf property to true, to hide the expand button for this node.
Example
In this demo, the ASPxTreeView uses Virtual Mode to display the file/folder tree of the demo’s web site.
<dx:ASPxTreeView ID="treeView" runat="server" EnableCallBacks="true" OnVirtualModeCreateChildren="treeView_VirtualModeCreateChildren">
</dx:ASPxTreeView>
using System.Collections.Generic;
using DevExpress.Web.ASPxTreeView;
using System.IO;
public partial class _Default : System.Web.UI.Page {
const string FileImageUrl = "~/Images/file.png";
const string DirImageUrl = "~/Images/directory.png";
protected void Page_Load(object sender, EventArgs e) {
}
protected void treeView_VirtualModeCreateChildren(object source, TreeViewVirtualModeCreateChildrenEventArgs e) {
string parentNodePath = string.IsNullOrEmpty(e.NodeName) ? Page.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;
}
protected bool IsSystemName(string name) {
name = name.ToLower();
return name.StartsWith("app_") || name == "bin"
|| name.EndsWith(".aspx.cs") || name.EndsWith(".aspx.vb");
}
}
<dx:ASPxTreeView ID="treeView" runat="server" EnableCallBacks="true" OnVirtualModeCreateChildren="treeView_VirtualModeCreateChildren">
</dx:ASPxTreeView>
Imports System.Collections.Generic
Imports DevExpress.Web.ASPxTreeView
Imports System.IO
Partial Public Class _Default
Inherits System.Web.UI.Page
Private Const FileImageUrl As String = "~/Images/file.png"
Private Const DirImageUrl As String = "~/Images/directory.png"
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Protected Sub treeView_VirtualModeCreateChildren(ByVal source As Object, ByVal e As TreeViewVirtualModeCreateChildrenEventArgs)
Dim parentNodePath As String
If String.IsNullOrEmpty(e.NodeName) Then
parentNodePath = Page.MapPath("~/")
Else
parentNodePath = e.NodeName
End If
Dim children As New List(Of TreeViewVirtualNode)()
If Directory.Exists(parentNodePath) Then
For Each childPath As String In Directory.GetDirectories(parentNodePath)
Dim childDirName As String = Path.GetFileName(childPath)
If IsSystemName(childDirName) Then
Continue For
End If
Dim childNode As New TreeViewVirtualNode(childPath, childDirName)
childNode.Image.Url = DirImageUrl
children.Add(childNode)
Next childPath
For Each childPath As String In Directory.GetFiles(parentNodePath)
Dim childFileName As String = Path.GetFileName(childPath)
If IsSystemName(childFileName) Then
Continue For
End If
Dim childNode As New TreeViewVirtualNode(childPath, childFileName)
childNode.IsLeaf = True
childNode.Image.Url = FileImageUrl
children.Add(childNode)
Next childPath
End If
e.Children = children
End Sub
Protected Function IsSystemName(ByVal name As String) As Boolean
name = name.ToLower()
Return name.StartsWith("app_") OrElse name = "bin" OrElse name.EndsWith(".aspx.cs") OrElse name.EndsWith(".aspx.vb")
End Function
End Class
See Also