C#TreeView 无限级别分类实现方法
C#TreeView 无限级别分类实现方法
发布时间:2016-12-28 来源:查字典编辑
摘要:做分类经常会用到无限级别的分类先介绍一下数据库的表结构tid类别编号tname类别名称pid父类编号测试数据就不写了,大家可以自己插入一下试...

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

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

tid 类别编号

tname 类别名称

pid 父类编号

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

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

复制代码 代码如下:

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 上面

复制代码 代码如下:

/// <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);

}

}

调用的方法很简单

复制代码 代码如下:

DataTable dtRet = (DataTable)dh.ExecProcRetObj(ep);

DataView dv = new DataView(dtRet);

dv.RowFilter = "pid=0";

TreeDataBind(dv, this.treeView1.Nodes.Add("商品类别"));

效果

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类