zoukankan      html  css  js  c++  java
  • TreeView绑定XML

    前台HTML:

    <asp:TreeView ID="TreeViewMU" runat="server" ShowCheckBoxes="All"  AutoGenerateDataBindings="False" ontreenodecheckchanged="TreeViewMU_TreeNodeCheckChanged">
           
    </asp:TreeView>

     

    后台CS:

    -----------绑定TreeView--------------------------------------------------------------------------

          protected void TreeVMU()
            {
                XmlDocument xmldoc = new XmlDocument();
                string spath = Server.MapPath("~\\xml\\navigation.xml");
                xmldoc.Load(spath);
                TreeViewMU.Nodes.Clear();
               
                TreeViewMU.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name));
                TreeNode tnode = new TreeNode();
                tnode = (TreeNode)TreeViewMU.Nodes[0];
                addTreeNode(xmldoc.DocumentElement,tnode);
                //TreeViewMU.ExpandAll();

            }
            private void addTreeNode(XmlNode xmlNode, TreeNode treeNode)
            {
                XmlNode xNode;//存放xml节点
                TreeNode tNode;//存放树节点
                XmlNodeList xNodeList;//存放节点集合(这里是所有子节点的集合)
                if (xmlNode.HasChildNodes)//判断是否有子节点
                {
                    xNodeList = xmlNode.ChildNodes;//子节点集合
                    for (int i = 0; i <= xNodeList.Count - 1; i++)
                    {
                        xNode = xmlNode.ChildNodes[i]; //获取当前子节点
                        TreeNode node = new TreeNode();
                        node.Text = xNode.Attributes["Name"].Value;
                        treeNode.ChildNodes.Add(node);
                        tNode = treeNode.ChildNodes[i];//获取当前树节点
                        addTreeNode(xNode, tNode);     //递归
                    }
                }
                else
                {
                    treeNode.Text = xmlNode.Attributes["Name"].Value;
                }
            }

           --------------------------选择Checkbox---------------------------------------------------
            private void CheckTreeNode(TreeNode treeNode,bool tf)
            {
                TreeNode tNode;//存放树节点
                if (treeNode.ChildNodes.Count>0)//判断是否有子节点
                {
                    for (int i = 0; i <= treeNode.ChildNodes.Count - 1; i++)
                    {
                        tNode = (TreeNode)treeNode.ChildNodes[i]; //获取当前子节点
                       
                        tNode.Checked = tf;

                        CheckTreeNode(tNode, tf);     //递归
                    }
                }
                else
                {
                  
                     treeNode.Checked = tf;
                   
                }
            }

            protected void TreeViewMU_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
            {

                if (TreeViewMU.CheckedNodes.Count > 0)
                {
                    if (e.Node.Checked == true)
                    {
                        e.Node.Checked = true;
                        CheckTreeNode(e.Node, true);
                    }
                    else
                    {
                        e.Node.Checked = false;
                        CheckTreeNode(e.Node, false);
                    }
                }
                  
               
               
            }

     效果图:

    简单明了。

  • 相关阅读:
    Android Studio 2.3.1导出jar文件不能生成release解决办法
    AndroidStudio 3.0 生成jar包的方法
    Android Studio如何打jar包
    Android Studio 如何打JAR包(修订版)
    6款程序员必备的开源中文处理工具
    Qt5.8 下链接 Mysql 错误以及解决方法(无论 Mysql 是什么版本的,64 位 Qt 要用 64 位的 Mysql 驱动,32 位的 Qt 要用 32 位的Mysql 驱动)
    Go 语言如果按这样改进,能不能火过 Java?
    基于 CSP 的设计思想和 OOP 设计思想的异同
    DELPHI下多线程编程的几个思维误区(QDAC)
    如何使用表单
  • 原文地址:https://www.cnblogs.com/Elgin/p/2057246.html
Copyright © 2011-2022 走看看