手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net dataview做无限极分类的又一用法
asp.net dataview做无限极分类的又一用法
摘要:数据库结构:classidid主键jobClassName对应的类型名称ClassName对应的父类的id通常做法:复制代码代码如下:pri...

数据库结构:

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><h3>" + dr["jobclassname"].ToString() + "</h3></div>");

else

Response.Write("<div>"+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~。

【asp.net dataview做无限极分类的又一用法】相关文章:

asp.net字符串分割函数使用方法分享

asp.net发邮件的几种方法汇总

asp.net Repeater取得CheckBox选中的某行某个值的c#写法

在asp.net中实现datagrid checkbox 全选的方法

asp.net实现C#绘制太极图的方法

asp.net下gridview 批量删除的实现方法第1/3页

asp.net读取excel文件的三种方法示例

asp.net button 绑定多个参数

asp.net UpdatePanel的简单用法

asp.net 时间类 一周的周一和周末的日期

精品推荐
分类导航