zoukankan      html  css  js  c++  java
  • TreeView保存当前节点展开状态【Draft Saved】

    前台没有什么而设置,主要代码实现都是在后台。包括加载节点数据,保存当前节点Parent路径状态,设置当前节点展开状态。

    Form_Load中:首先获取到保存的state状态,去遍历treeview所有节点,匹配。如果匹配成功,设置该节点Expended属性为true。

    【图中Highlight部分,换成递归遍历更好,暂时没有实现。】

     protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    BindHowNode();
                    BindReportNode();
                    BindDocNode();
                    BindLinksNode();
                }
                if (Request.QueryString["state"] != null)
                {
                    string state = Request.QueryString["state"].ToString();
                    foreach (TreeNode tn in tvAcc.Nodes)
                    {
                        if (tn.Text == state)
                        {
                            tn.Expanded = true;
                        }
    
                        foreach (TreeNode tn1 in tn.ChildNodes)
                        {
                            if (tn1.Text == state)
                            {
                                tn1.Expanded = true;
                            }
    
                            foreach (TreeNode tn2 in tn1.ChildNodes)
                            {
                                if (tn2.Text == state)
                                {
                                    tn2.Expanded = true;
                                }
                            }
                        }
                    }
                }
            }

    后台动态加载TreeView数据:

           private void BindHowNode()
            {
                TreeNode rootHow = new TreeNode("How We Work", "How We Work", "", "#", "");
                rootHow.Expanded = false;
                tvAcc.Nodes.Add(rootHow);
    
                HowBLL howBLL = new HowBLL();
                DataTable dtHow = new DataTable();
                dtHow = howBLL.GetItems();
    
                for (int i = 0; i < dtHow.Rows.Count; i++)
                {
                    string itemID = dtHow.Rows[i]["ID"].ToString();
                    string itemTitle = dtHow.Rows[i]["itemTitle"].ToString();
                    TreeNode treeDoc = new TreeNode(itemTitle, "HowWeWork.aspx?hid=" + itemID, "", "", "");
                    rootHow.ChildNodes.Add(treeDoc);
                }
            }

    在SelectedNodeChanged()事件中添加当前状态的值:
    (此处用的是TreeNode.Text, 而没用TreeeNode.ValuePath,因为Value值用来页面跳转了,与treeview的路径有一定出入。)

            protected void tvAcc_SelectedNodeChanged(object sender, EventArgs e)
            {
                TreeNode tn = tvAcc.SelectedNode.Parent;
    
                if (Request.QueryString["state"] != null)
                {
                    tn.Expanded = true;
                }
                string navUrl = tvAcc.SelectedNode.Value.ToString() + "&state=" + tn.Text;
                Response.Redirect(navUrl);
            }
  • 相关阅读:
    JAVA:连接池技术说明以及MVC设计模式理解
    SoftLayer®凭借Flex Images™消融物理与虚拟服务器之间的界线
    InternetExplorer 表单及用户名密码提交
    devStack
    windows平台vhd磁盘文件挂载
    xen vhd操作工具source code研读
    windows 基于命令行制作vhd虚拟磁盘
    vhd镜像格式及vhd-util工具应用
    mongoDB windows reinstall add auth
    MongoDb Windows linux平台环境及主流编程语言驱动安装同时配置mongoDb的远程连接
  • 原文地址:https://www.cnblogs.com/eva_2010/p/2550697.html
Copyright © 2011-2022 走看看