当前位置: 移动技术网 > IT编程>开发语言>.net > asp.net dataview做无限极分类的又一用法

asp.net dataview做无限极分类的又一用法

2017年12月12日  | 移动技术网IT编程  | 我要评论

项目投标书,小淘气尼古拉斯,孕妇能吃槐花蜂蜜吗

数据库结构:
classidid 主键
jobclassname 对应的类型名称
classname 对应的父类的id
通常做法:

复制代码 代码如下:

private void display(string parentid, string space)
{
datatable dt;
string strsql;
strsql = "select * from tree where parentid =" + parentid + " order by classid desc";
sqldataadapter sda = new sqldataadapter(strsql, conn);
dataset ds = new dataset();
sda.fill(ds, "tree");
dt = ds.tables["tree"];
if (dt.rows.count > 0)
{
foreach (datarow dr in dt.rows)
{
stropinion += space + "<font color=red>[" + dr["jobclassname"].tostring() +"<br>";
display(dr["classid"].tostring(), "            " + space,false);
}
}
}

很明显,这种做法是每个父分类都得建立一次连接,完全浪费资源
现在一次取出所有分类,使用dataview的rowfilter属性做多次过滤
关键代码

复制代码 代码如下:

public partial class tree_default : system.web.ui.page
{
datatable dt = null;
protected void page_load(object sender, eventargs e)
{
if (!ispostback)
{
bind(0);
}
}
public void bind(int pid)
{
datatable dt1 = bindtree(pid);
foreach (datarow dr in dt1.rows)
{
int id = convert.toint32(dr["classid"].tostring());
if (pid == 0)
response.write("<div style='width:100%;float:right;'><h3>" + dr["jobclassname"].tostring() + "</h3></div>");
else
response.write("<div style='width:25%;float:left;'>"+dr["jobclassname"].tostring()+"</div>");
bind(id);
}
}
public datatable bindtree(int pid)
{
if (dt == null)
dt = new data().getcatelogs();
dataview root = dt.defaultview;
root.rowfilter = "parentid=" + pid;
return root.totable();
}
}

这样的话,也就没必要浪费资源的了。
其实这篇文章有些牵强了,一般分类都很少做改动的,直接用缓存或静态化处理就可以了,只是想到了记录一下o(∩_∩)o~。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网