zoukankan      html  css  js  c++  java
  • TreeView状态保存

    很多时候会看到,使用Treeview的时候展开这个节点,到另外一个页面的时候Treeview的状态又恢复了,下面就是解决方法咯

    新建一个类

    public class TreeViewState
    {
        
    public void SaveTreeView(TreeView treeView, string key)
        
    {
            List
    <bool?> list = new List<bool?>();
            SaveTreeViewExpandedState(treeView.Nodes, list);
            HttpContext.Current.Session[key
    + treeView.ID] = list;
        }


        
    private void SaveTreeViewExpandedState(TreeNodeCollection nodes, List<bool?> list)
        
    {
            
    foreach (TreeNode node in nodes)
            
    {
                list.Add(node.Expanded);
                
    if (node.ChildNodes.Count > 0)
                
    {
                    SaveTreeViewExpandedState(node.ChildNodes, list);
                }

            }

        }


        
    private int RestoreTreeViewIndex;

        
    public void RestoreTreeView(TreeView treeView, string key)
        
    {
            RestoreTreeViewIndex
    = 0;
            RestoreTreeViewExpandedState(treeView.Nodes,
                (List
    <bool?>)HttpContext.Current.Session[key + treeView.ID] ?? new List<bool?>());
        }


        
    private void RestoreTreeViewExpandedState(TreeNodeCollection nodes, List<bool?> list)
        
    {
            
    foreach (TreeNode node in nodes)
            
    {
                
    if (RestoreTreeViewIndex >= list.Count) return;

                node.Expanded
    = list[RestoreTreeViewIndex++];
                
    if (node.ChildNodes.Count > 0)
                
    {
                    RestoreTreeViewExpandedState(node.ChildNodes, list);
                }

            }

        }

    }

    在页面代码,TreeView的控件里事件里写

        protected void TreeViewMain_Unload(object sender, EventArgs e)
        
    {
            
    // save the state of all nodes.
            new TreeViewState().SaveTreeView(TreeViewMain, this.GetType().ToString());
        }
  • 相关阅读:
    Java 最常见的 208 道面试题(第九模块和第十模块答案)
    更灵活的边缘云原生运维:OpenYurt 单元化部署新增 Patch 特性
    高德 Serverless 平台建设及实践
    官宣:恭喜 ChaosBlade 项目进入 CNCF Sandbox
    工商银行分布式服务 C10K 场景解决方案
    云原生的进一步具象化
    阿里云入选 2021 Gartner APM 魔力象限,国内唯一入选云厂商
    云原生下的灰度体系建设
    seata-golang 一周年回顾
    WebAssembly + Dapr = 下一代云原生运行时?
  • 原文地址:https://www.cnblogs.com/javabin/p/1583003.html
Copyright © 2011-2022 走看看