zoukankan      html  css  js  c++  java
  • treeview 递归

            #region TreeView递归无限节点加载

            /// <summary>
            
    /// TreeView递归无限节点加载
            
    /// 
            
    /// 数据表要求-------------------------------------------------
            
    /// 
            
    /// NodeValue(ID)   RootSign(RootID)  NodeText(Name)
            
    ///   001                 root              RootDisNameA
            
    ///                 (注释:RootText)
            
    ///   002                 root              RootDisNameB
            
    ///                 (注释:RootText)   
            
    ///   003                 001               RootDisNameC
            
    ///   004                 001               RootDisNameD
            
    ///   005                 001               RootDisNameE
            
    ///   006                 002               RootDisNameF
            
    ///   007                 002               RootDisNameG
            
    ///   008                 005               RootDisNameH
            
    ///   009                 007               RootDisNameI
            
    ///   010                 007               RootDisNameJ
            
    ///   011                 008               RootDisNameK
            
    ///   012                 011               RootDisNameL
            
    ///   
            
    /// 数据表要求------------------------------------------------
            
    /// 这三个字段是必须的,名字可以自定义
            
    /// </summary>
            
    /// <param name="tv">树形控件</param>
            
    /// <param name="dt">数据源控件</param>
            
    /// <param name="NodeText">节点显示的字段名</param>
            
    /// <param name="NodeValue">表主键编码字段名</param>
            
    /// <param name="RootSign">根编码字段名</param>
            
    /// <param name="RootText">显示根的条件内容</param>
            public void LoadTreeViewDt(TreeView tv, DataTable dt, string NodeText, string NodeValue, string RootSign, string RootText)
            {
                //得到根节点信息
                DataRow[] DataRoot = dt.Select(RootSign + "='" + RootText + "'");

                //循环遍历根节点信息
                foreach (DataRow dr in DataRoot)
                {
                    //加载根节点
                    TreeNode tn = new TreeNode();
                    tn.Text = dr[NodeText].ToString();
                    tn.Tag = dr[NodeValue].ToString();
                    tv.Nodes.Add(tn);

                    //递归加载子节点
                    LoadNodes(tn, dr, NodeText, NodeValue, RootSign, dt);
                }
            }

            private void LoadNodes(TreeNode tn, DataRow dr, string NodeText, string NodeValue, string RootSign, DataTable dt)
            {
                if (dr == null || tn == null) { return; }

                //得到子节点信息
                DataRow[] DataChild = dt.Select(RootSign + "='" + dr[NodeValue].ToString() + "'");

                if (DataChild != null || DataChild.Length > 0)
                {
                    //循环遍历子节点信息
                    foreach (DataRow drChild in DataChild)
                    {
                        //加载子节点
                        TreeNode tnChild = new TreeNode();
                        tnChild.Text = drChild[NodeText].ToString();
                        tnChild.Tag = drChild[NodeValue].ToString();
                        tn.Nodes.Add(tnChild);

                        //形成递归
                        LoadNodes(tnChild, drChild, NodeText, NodeValue, RootSign, dt);
                    }
                }
            }

            #endregion
  • 相关阅读:
    使用mongoose--写接口
    数据结构上机实验(2)
    时间复杂度十道练习题目
    Python网络爬虫实战入门
    区分矩阵的三大关系
    用python检查矩阵的计算
    ab矩阵(实对称矩阵)
    Python大数据应用
    数据结构上机实验(1)
    0038. Count and Say (E)
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/2535352.html
Copyright © 2011-2022 走看看