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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值