C#TreeView无限级别分类实现方法
做分类经常会用到无限级别的分类 先介绍一下数据库的表结构
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("商品类别"));
效果相关文章