.Net中实现无限分类的2个例子
以前总想着搞这个无限分类,今天终于得空好好的看了下,发现实现的原理还是很简单的,数据结构上,用两列(分类编号,上级编号)就可以实现,可是为了联合查询的方便,一般都再增加一列(深度),在这个实例里,我只用了两列,剩下的无非就是递归着对treeview进行数据绑定而已~~。
public partial class _default : system.web.ui.page
{
bil bil = new bil();
protected void page_load(object sender, eventargs e)
{
if (!ispostback)
{
bind_tree("0",null);
}
}
protected void bind_tree(string childnode,treenode tn)
{
datatable dt = bil.getbyclasspre(childnode).tables[0];
foreach (datarow dr in dt.rows)
{
treenode node = new treenode();
if (tn==null)
{
//根
node.text = dr["classname"].tostring();
this.treeview1.nodes.add(node);
bind_tree(dr["classid"].tostring(), node);
}
else
{
//当前节点的子节点
node.text = dr["classname"].tostring();
tn.childnodes.add(node);
bind_tree(dr["classid"].tostring(),node);
}
}
}
}
上次写了使用treeview控件进行无限分类绑定的方法,这回再写个通用性更好的~~嘿嘿 绑定dropdownlist~~思想跟上篇日志很接近,也是使用递归,当然,网络上还有很多人给数据库增加了一个“depth(深度)”的字段,这样进行绑定的时候还可以更简单些哈~~当然,没有必要的就不加了,还是递归使用起来简单些哈~~不多说了,上代码哈:
protected void bind_droplist(string childnode, string tmp)
{
datatable dt = bil.getbyclasspre(childnode).tables[0];
foreach (datarow dr in dt.rows)
{
if (dr["classpre"].tostring()=="0")
{
//如果是根节点
tmp = "";
dropdownlist1.items.add(dr["classname"].tostring());
bind_droplist(dr["classid"].tostring(), tmp + " ");
}
else
{
//不是根节点
dropdownlist1.items.add( tmp+"|-" + dr["classname"].tostring());
bind_droplist(dr["classid"].tostring(), tmp + " ");
}
}
}
下一篇: java实现Socket通信之单线程服务
推荐阅读
-
.Net中实现无限分类的2个例子
-
asp.net实现DropDownList,TreeView,ListBox的无限极分类目录树
-
Asp.Net实现无限分类生成表格的方法(后台自定义输出table)
-
Asp.Net实现无限分类生成表格的方法(后台自定义输出table)
-
asp.net实现DropDownList,TreeView,ListBox的无限极分类目录树
-
Php实现无限栏目分类读取的例子
-
一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子_html/css_WEB-ITnose
-
php实现的无限分类(递归版本)的例子
-
php实现的无限分类(递归版本)的例子
-
一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子_html/css_WEB-ITnose