鱼跃千里

 

DataList嵌套绑定数据

    最近要做一个图书分类列表显示,要用到这个,想了好久,又在网上搜了一下,才搞定
关键的就是在外层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级分类
string f = ((Label)e.Item.FindControl("Label1")).Text;
还有这句,这个是找到内层的DataList,找到它后给它的数据源赋值就OK了
DataList dl2 = (DataList)e.Item.FindControl("DataLis2");

当然,我们也可以利用这个思想嵌套使用其他的数据控件

posted on 2008-05-31 04:09 张跃 阅读(456) 评论(1)  编辑 收藏 网摘 所属分类: ASP.NETC#

评论

#1楼  2008-05-31 17:13 Ma Wei      

good!我也在做一个这样的问题!   回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-05-31 04:15 编辑过
Google站内搜索
[推荐职位]上海盛大网络招聘架构师



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:


相关搜索:
C# ASP.NET 数据绑定

相关链接:
 

导航

统计

公告

与我联系

搜索

 

常用链接

留言簿(1)

我的标签

随笔分类(43)

随笔档案(31)

文章档案(1)

最新评论

阅读排行榜

评论排行榜