Skip to main content
A newer version of this page is available. .

ASPxTreeList.VirtualModeCreateChildren Event

Enables creation of a list of business objects that correspond to the child nodes owned by the processed node (virtual mode).

Namespace: DevExpress.Web.ASPxTreeList

Assembly: DevExpress.Web.ASPxTreeList.v18.2.dll

Declaration

public event TreeListVirtualModeCreateChildrenEventHandler VirtualModeCreateChildren

Event Data

The VirtualModeCreateChildren event's data class is TreeListVirtualModeCreateChildrenEventArgs. The following properties provide information specific to this event:

Property Description
Children Gets or sets the collection of children for the currently processed node object.
NodeObject Gets the processed node object.

Remarks

In virtual mode a tree is created on demand. In this instance, child nodes are created and initialized when their parent node is expanded.

The ASPxTreeList fires two events that you should process in code. These include:

Handle the VirtualModeCreateChildren event to create a list of business objects that correspond to the child nodes owned by the processed node. This list should be assigned to the TreeListVirtualModeCreateChildrenEventArgs.Children property.

For detailed information, see Virtual Mode.

Example

In this example, the ASPxTreeList uses the Virtual data binding method to display the file/folder tree. In this mode, a tree is created on demand.

The image below shows the result.

exVirtualMode

using System.IO;
using System.Collections.Generic;
using DevExpress.Web.ASPxTreeList;

protected void ASPxTreeList1_VirtualModeCreateChildren(object sender,
TreeListVirtualModeCreateChildrenEventArgs e) {
    string path = e.NodeObject == null ? Page.MapPath("~/") : e.NodeObject.ToString();

    List<string> children = new List<string>();
    if (Directory.Exists(path)) {
        foreach (string name in Directory.GetDirectories(path)) {
            if (!IsSystemName(name))
                children.Add(name);
        }
        foreach (string name in Directory.GetFiles(path))
            if (!IsSystemName(name))
                children.Add(name);
    }
    e.Children = children;
}
protected void ASPxTreeList1_VirtualModeNodeCreating(object sender,
TreeListVirtualModeNodeCreatingEventArgs e) {
    string path = e.NodeObject.ToString();

    e.NodeKeyValue = GetNodeGuid(path);
    e.IsLeaf = !Directory.Exists(path);
    e.SetNodeValue("FileName", PopFileName(path));
}

// Helpers

Guid GetNodeGuid(string path) {
    if (!Map.ContainsKey(path))
        Map[path] = Guid.NewGuid();
    return Map[path];
}
Dictionary<string, Guid> Map {
    get {
        const string key = "DX_PATH_GUID_MAP";
        if (Session[key] == null)
            Session[key] = new Dictionary<string, Guid>();
        return Session[key] as Dictionary<string, Guid>;
    }
}
string PopFileName(string path) {
    return path.Substring(1 + path.LastIndexOf("\\"));
}
bool IsSystemName(string name) {
    name = PopFileName(name).ToLower();
    return name.StartsWith("app_") || name == "bin"
        || name.EndsWith(".aspx.cs") || name.EndsWith(".aspx.vb");
}
See Also