TreeView无限极分类绑定(从数据库读取数据源)

时间:2021-05-05 11:41:03

TreeView这个控件其实我本来不怎么会用到,今天有一个项目要用到,而且是无限极的分类数据绑定,于是就根据自己以前写过的代码别写出了这个无限极分类的例子,呵呵希望能够对大家有所帮助,本人尽量把注释写的详细一些把,因为有的时候搜问题到别人的博客,写的代码完全看不懂,每个人写代码可能都有一定的习惯,所以一定要多写一些注释让别人看懂!

首先说一下我的数据库结构

Pid                主键自动增长

PartName       分类名称

ParentId        父级ID

相信大家一定都会很熟悉吧,这是无限极分类比较常用的一种设计思路!好了接下来看代码吧,自己认为这个还是很强大的,使用了递归的操作,大大减少了代码量!

         ///   <summary>   
        
///  控件绑定父节点 
        
///   </summary>   
         private   void  TreeViewBind()
        {
            DataSet ds 
=  pbll.GetList( "" );    // 数据源读取所有数据
            DataView dv  =  ds.Tables[ 0 ].DefaultView;
            dv.RowFilter 
=   " ParentId=0 " ;    // 筛选ParentId=0为*分类
            TreeView1.ShowCheckBoxes  =  TreeNodeTypes.All;
            
foreach  (DataRowView drv  in  dv)
            {
                TreeNode node 
=   new  TreeNode();
                node.Text 
=  drv[ " PartName " ].ToString();
                node.Value 
=  drv[ " Pid " ].ToString();
                node.Expanded 
=   false ;
                TreeView1.Nodes.Add(node);
                AddReplies(dv, node);
            }
        }
        
///   <summary>   
        
///  递归绑定子节点  
        
///   </summary>   
        
///   <param name="dv"></param>   
        
///   <param name="node"></param>   
         private   void  AddReplies(DataView dv, TreeNode node)
        {
            dv.RowFilter 
=   " ParentId=' "   +  node.Value  +   " ' " ;
            
foreach  (DataRowView row  in  dv)
            {
                TreeNode replyNode 
=   new  TreeNode();
                replyNode.Text 
=  row[ " PartName " ].ToString();
                replyNode.Value 
=  row[ " Pid " ].ToString();
                replyNode.Expanded 
=   false ;
                node.ChildNodes.Add(replyNode);
                AddReplies(dv, replyNode);
            }
        }

  好了就是这些了,有不明白的地方可以留言,更多精品免费源码尽在天天源码论坛(www.ttyuanma.com)