惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
罗磊的独立博客
爱范儿
爱范儿
J
Java Code Geeks
博客园 - 司徒正美
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
美团技术团队
小众软件
小众软件
Google DeepMind News
Google DeepMind News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Jina AI
Jina AI
Y
Y Combinator Blog
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
Vercel News
Vercel News

博客园 - 鱼跃千里

Python抽奖程序 - 鱼跃千里 - 博客园 右键菜单添加CMD--备忘 - 鱼跃千里 - 博客园 windows 7安装sql server2005以及com (-1073737712错误)+ 8004e00f错误 Nhibernate 2.0 学习笔记,关于hbm映射文件的重要性 要签约了 [转]虚方法和抽象方法 腾讯笔试 IE7不能支持Google的Google Suggest? 两个不错的生成图片验证码代码 继承类实例化时构造函数的执行顺序 FCKEditor的使用---起步 [转+自己修改]将 MS SQL Server 2005 SP2 整合到安装文件 Google AdSense 申请通过了 [转]发生 LC.exe 已经退出 代码-1 错误的解决方法 [转]VS2005 SP1集成版制作 DataList等控件嵌套绑定的一个需要注意的地方 为DataList和GridView内容项添加序号 超时时间已到。在操作完成之前超时时间已过或服务器未响应。 (.Net SqlClient Data Provider) [转]最佳ASP.NET编程习惯
DataList嵌套绑定数据
鱼跃千里 · 2008-05-31 · via 博客园 - 鱼跃千里

    最近要做一个图书分类列表显示,要用到这个,想了好久,又在网上搜了一下,才搞定
关键的就是在外层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  鱼跃千里  阅读(1523)  评论()    收藏  举报