最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:44:01
文档

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

asp.net dataview做无限极分类的又一用法:数据库结构: classidid 主键 jobClassName 对应的类型名称 ClassName 对应的父类的id 通常做法: 代码如下:private void Display(string parentid, String space) { DataTable dt; String strSQL; strSQL =
推荐度:
导读asp.net dataview做无限极分类的又一用法:数据库结构: classidid 主键 jobClassName 对应的类型名称 ClassName 对应的父类的id 通常做法: 代码如下:private void Display(string parentid, String space) { DataTable dt; String strSQL; strSQL =


数据库结构:
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~。

文档

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

asp.net dataview做无限极分类的又一用法:数据库结构: classidid 主键 jobClassName 对应的类型名称 ClassName 对应的父类的id 通常做法: 代码如下:private void Display(string parentid, String space) { DataTable dt; String strSQL; strSQL =
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top