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);
            }
  • 相关阅读:
    视图和同义词的区别
    【MooTools】自定义滚动条小插件
    有理想的程序员必须知道的15件事
    革新:.NET 2.0的自定义配置文件体系初探
    我的2006年学习计划
    为ASP.NET 2.0配置数据源
    通用异常处理框架
    泛型的序列化问题
    实战SVN For Apache2(二)
    LightningFramework系列(一、初步总架构图)
  • 原文地址:https://www.cnblogs.com/eva_2010/p/2550697.html
Copyright © 2011-2022 走看看