zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#TreeView无限级别分类实现方法

c#方法 实现 分类 无限 级别 treeview
2023-06-13 09:14:48 时间

做分类经常会用到无限级别的分类 先介绍一下数据库的表结构

tid 类别编号

tname类别名称

pid父类编号

测试数据就不写了,大家可以自己插入一下试试

查询制定类别的所有的子类  sql的代码

复制代码代码如下:


alterproc proc_chaxun
(@tidint)
as
begin 

   
   withtt as
   (

       selecttid,tname,pidfromdbo.t_goodsTypewheretid=@tid
       unionall
       selectt.tid,t.tname,t.pidfromdbo.t_goodsType tinnerjointt
       ont.pid=tt.tid
   )
   select*fromtt
end

查询之后获取记录集  绑定到前台的TreeView上面

复制代码代码如下:


 ///<summary>
           ///给Tree绑定数据递归添加子节点
           ///</summary>
           ///<paramname="dv">数据视图</param>
           ///<paramname="tnOld">添加数据的节点</param>
           publicvoidTreeDataBind(DataViewdv,TreeNodetnOld)
           {
               TreeNodetnNew;   //创建一个新的节点
               foreach(DataRowViewdrvindv)
               {
                   //为新的借点设置属性
                   tnNew=tnOld.Nodes.Add(drv["tname"].ToString());
                   tnNew.Tag=drv["tid"];
                   //过滤数据视图父类id=上一级的tid
                   dv.RowFilter="pid="+drv["tid"].ToString();
                   //自己调用自己
                   TreeDataBind(dv,tnNew);
               }
           }

调用的方法很简单

复制代码代码如下:
DataTabledtRet=(DataTable)dh.ExecProcRetObj(ep);
DataViewdv=newDataView(dtRet);
 dv.RowFilter="pid=0";
TreeDataBind(dv,this.treeView1.Nodes.Add("商品类别"));

效果