如何在Devexpress Virtual Treeview中维护项目的检查状态?

时间:2017-01-27 04:19:41

标签: c# .net treeview devexpress virtualtreeview

我有一个在虚拟模式下创建的Treeview,它有4个级别的节点,在页面加载根元素和第一级元素被加载,休息将基于动态使用treeFolderList_VirtualModeCreateChildren事件加载。

这就是我目前所拥有的

protected void treeFolderList_VirtualModeCreateChildren(object source, TreeViewVirtualModeCreateChildrenEventArgs e)
{
    List<TreeViewVirtualNode> children = new List<TreeViewVirtualNode>();


    if (e.NodeName == null)
    {
        AppendChildNode(children, "root", "All Domains", false);
    }
    else
    {
        if (e.NodeName.Contains("root"))
        {
            PopulateChildNodes(false, children);
        }
        else
        {
            if (!(e.NodeName.StartsWith("u_")))
            {
                PopulateUserChildNodes(false, children, GetDomainBase(e.NodeName), e.NodeName);
            }
            else
            {
                TreeViewVirtualNode tvNode = (TreeViewVirtualNode)treeFolderList.Nodes.FindByName(e.NodeName);
                TreeViewVirtualNode tvNodeParent = (TreeViewVirtualNode)tvNode.Parent;
                string tvParentNodeName = tvNodeParent.Name;
                PopulateUserChildNodes(true, children, GetDomainBase(tvParentNodeName), e.NodeName);
            }
        }
    }
    e.Children = children;
}

这项工作符合预期,并分别在扩展节点时创建子元素。我的问题是我有每个节点的复选框,当我重新加载/重定向到它将反映我选择的节点的页面时,我需要能够保存Treeview

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

有几种方法可以尝试实现这一目标:

  1. 配置ASPxTreeList.SettingsCookies 元素(可能是最简单的解决方案),特别是StoreSelection属性:

    ListBox
  2. 如果SettingsCookies不起作用,请尝试使用ASPxTreeList.ClientLayout事件手动保存和恢复TreeList布局。首先定义事件处理程序:

    <dvx:ASPxTreeList ... >
    ...
        <SettingsCookies Enabled="true" StoreSelection="true"  />
    ...
    </dvx:ASPxTreeList>
    

    并按照文档中的示例来处理此事件。这样ASPxTreeView以及ASPxGridView就会在<dvx:ASPxTreeList OnClientLayout="dvxTreeList_ClientLayout"... > ... </dvx:ASPxTreeList> 字符串中提供节点/列格式数据,这些数据可以保存到DB然后还原回来。

  3. 将TreeView选定的节点键存储在Session中,并使用回调来恢复它们:

    示例:ASPxTreeList - How to store the selection between requests

  4. 我个人不会依赖cookie,而是首先尝试方法#2和#3。 #2对我来说非常适合使用ASPxGridView和我们在复杂的ASPxTreeView设置中使用的#3,它还跟踪隐藏节点的选择。

    我希望链接文档中的示例应该足够简单,您可以复制和修改。如果没有,请评论哪些不适合您。

    HTH