DataList嵌套绑定数据
最近要做一个图书分类列表显示,要用到这个,想了好久,又在网上搜了一下,才搞定
关键的就是在外层DataList的ItemDataBound的事件中使用e.Item.FindControl()来找到自己所需要的(在外层)数据
我郁闷的就是自己开始是在DataBinding事件中处理,试了很多遍都没有搞定.
自己先拖一个DataList1,编辑模板里面放一个Lable1,在DataList1里面再放一个DataList2,同样在DataList2编辑模板放一个Lable2.当然,两个Lable的数据绑定字段是要自己写一下的.
看一下代码吧,这个很简单
当然,我们也可以利用这个思想嵌套使用其他的数据控件
关键的就是在外层DataList的ItemDataBound的事件中使用e.Item.FindControl()来找到自己所需要的(在外层)数据
我郁闷的就是自己开始是在DataBinding事件中处理,试了很多遍都没有搞定.
自己先拖一个DataList1,编辑模板里面放一个Lable1,在DataList1里面再放一个DataList2,同样在DataList2编辑模板放一个Lable2.当然,两个Lable的数据绑定字段是要自己写一下的.
看一下代码吧,这个很简单
1 protected void Page_Load(object sender, EventArgs e)
2 {
3 string s = "SELECT BookClass.* FROM BookClass WHERE (BookClassLevel = 0)";
4 Book.DAL.DBAccess db = new Book.DAL.DBAccess();
5 DataSet dr1 = db.ExecuteDataSet(s);
6 DataList1.DataSource = dr1;
7 DataList1.DataBind();
8
9 }
10 protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
11 {
12 string f = ((Label)e.Item.FindControl("Label1")).Text;
13 string s = "SELECT BookClass.* FROM BookClass WHERE (BookClassFather = @f)";
14
15 Book.DAL.DBAccess db = new Book.DAL.DBAccess();
16 db.AddParameter("@f", f);
17 DataSet ds = db.ExecuteDataSet(s);
18 DataList dl2 = (DataList)e.Item.FindControl("DataLis2");
19 dl2.DataSource = ds;
20 dl2.DataBind();
21 }
那个Book.DAL.DBAccess是我自己写的一个用来数据库访问并执行语句的类,不用管它,可以用我们一般最简答的数据库访问的过程替代.重要的看一下这句,这个是获得外层的值,在这里就是图书分类的1级分类2 {
3 string s = "SELECT BookClass.* FROM BookClass WHERE (BookClassLevel = 0)";
4 Book.DAL.DBAccess db = new Book.DAL.DBAccess();
5 DataSet dr1 = db.ExecuteDataSet(s);
6 DataList1.DataSource = dr1;
7 DataList1.DataBind();
8
9 }
10 protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
11 {
12 string f = ((Label)e.Item.FindControl("Label1")).Text;
13 string s = "SELECT BookClass.* FROM BookClass WHERE (BookClassFather = @f)";
14
15 Book.DAL.DBAccess db = new Book.DAL.DBAccess();
16 db.AddParameter("@f", f);
17 DataSet ds = db.ExecuteDataSet(s);
18 DataList dl2 = (DataList)e.Item.FindControl("DataLis2");
19 dl2.DataSource = ds;
20 dl2.DataBind();
21 }
string f = ((Label)e.Item.FindControl("Label1")).Text;
还有这句,这个是找到内层的DataList,找到它后给它的数据源赋值就OK了DataList dl2 = (DataList)e.Item.FindControl("DataLis2");
当然,我们也可以利用这个思想嵌套使用其他的数据控件