源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-11-27 18:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#TreeView 无限级别分类实现方法
做分类 经常会用到无限级别的分类  先介绍一下数据库的表结构 [img]http://files.jb51.net/file_images/article/201304/20134190544356.png[/img] tid  类别编号 tname 类别名称 pid 父类编号 测试数据就不写了,大家可以自己插入一下试试 查询制定类别的 所有的子类   sql 的 代码
[u]复制代码[/u] 代码如下:
alter proc  proc_chaxun (@tid int ) as begin          with tt  as     (         select tid,tname,pid from dbo.t_goodsType where tid=@tid         union all         select t.tid,t.tname,t.pid from dbo.t_goodsType  t inner join tt         on t.pid=tt.tid     )     select * from tt end
查询之后获取记录集   绑定到前台的 TreeView 上面
[u]复制代码[/u] 代码如下:
 /// <summary>             /// 给Tree 绑定数据 递归添加子节点             /// </summary>             /// <param name="dv">数据视图</param>             /// <param name="tnOld">添加数据的节点</param>             public void TreeDataBind(DataView dv,TreeNode tnOld)             {                 TreeNode tnNew;    //创建一个新的节点                 foreach (DataRowView drv in dv)                 {                     //为新的借点设置属性                     tnNew = tnOld.Nodes.Add(drv["tname"].ToString());                     tnNew.Tag = drv["tid"];                     //过滤数据视图 父类id = 上一级的tid                     dv.RowFilter = "pid=" + drv["tid"].ToString();                     //自己调用自己                     TreeDataBind(dv, tnNew);                 }             }
调用的方法很简单
[u]复制代码[/u] 代码如下:
DataTable dtRet = (DataTable)dh.ExecProcRetObj(ep); DataView dv = new DataView(dtRet);  dv.RowFilter = "pid=0"; TreeDataBind(dv, this.treeView1.Nodes.Add("商品类别"));
效果 [img]http://files.jb51.net/file_images/article/201304/20134190752968.png[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部