Back to Devexpress

TreeViewVirtualNode Class

aspnet-devexpress-dot-web-9d3306cb.md

latest6.4 KB
Original Source

TreeViewVirtualNode Class

A virtual equivalent of the ASPxTreeView’s TreeViewNode object.

Namespace : DevExpress.Web

Assembly : DevExpress.Web.v25.2.dll

NuGet Package : DevExpress.Web

Declaration

csharp
public class TreeViewVirtualNode :
    TreeViewNode,
    ITreeViewVirtualNode
vb
Public Class TreeViewVirtualNode
    Inherits TreeViewNode
    Implements ITreeViewVirtualNode

Remarks

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.

aspx
<dx:ASPxTreeView ID="treeView" runat="server" EnableCallBacks="true" 
    OnVirtualModeCreateChildren="treeView_VirtualModeCreateChildren" />
csharp
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");
    }
}
vb
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

Implements

IStateManager

IPropertiesOwner

IExpressionsAccessor

IEnumerable

IHierarchyData

Inheritance

Object StateManager CollectionItem TreeViewNode TreeViewVirtualNode

See Also

TreeViewVirtualNode Members

Virtual Mode

Tree View

DevExpress.Web Namespace