Repeater控件的多层嵌套,DataList控件的多层嵌套

Repeater控件的多层嵌套,DataList控件的多层嵌套,本方法适用于Repeater和DataList,GridView没有测试

在前台如果遇到多级分类菜单的时候,我们通常会使用到Repeater控件来展示,Repeater控件最大的有点就是不会生成任何多余的html标签,所以它不会影响的页面的效果,平时Repeater的二级嵌套我们可能都接触过,其实多层的嵌套也很简单,只不过是多了一句话,哈哈,好了接下来看代码吧,希望会对你有帮助!

 1         //注意此方法的所有数据源都必须是Dataset或DataTable,不能为Ilist<>会报错
2 //绑定Repeater1数据
3 private void bind()
4 {
5 this.Repeater1.DataSource = pbll.GetList("ParentId=50");//DataSet数据源
6 this.Repeater1.DataBind();
7
8 }
9 //绑定Repeater2数据
10 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
11 {
12 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
13 {
14 Repeater rep = (Repeater)e.Item.FindControl("Repeater2");//找到Repeater1里的Repeater2
15 //这句话是关键一定不能忘,为Repeater2添加ItemDataBound的方法
16 rep.ItemDataBound += new RepeaterItemEventHandler(SmallCategories_ItemDataBound);
17 DataRowView rowv = (DataRowView)e.Item.DataItem;//获取Repeater1绑定行的数据视图
18 int Pid = Convert.ToInt32(rowv["Pid"]);//Pid为数据库列名字段
19 rep.DataSource = pbll.GetList("ParentId=" + Pid);//根据pid查询返回DataSet
20 rep.DataBind();
21
22 }
23 }
24 //绑定Repeater3数据(这个方法是自己写的)
25 protected void SmallCategories_ItemDataBound(object sender, RepeaterItemEventArgs e)
26 {
27 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
28 {
29 Repeater rep = (Repeater)e.Item.FindControl("Repeater3");
30 DataRowView rowv = (DataRowView)e.Item.DataItem;
31 int Pid = Convert.ToInt32(rowv["Pid"]);
32 rep.DataSource = pbll.GetList("ParentId=" + Pid);
33 rep.DataBind();
34 }
35 }

使用DataList多层嵌套时,把这句话 rep.ItemDataBound += new RepeaterItemEventHandler(SmallCategories_ItemDataBound),替换为

rep.ItemDataBound += new DataListItemEventHandler(SmallCategories_ItemDataBound)即可

好了就是这些,很简单吧,记得我写的注意,不然会报错的,有不明白的可以留言给我,请大家多多关注 我的博客,我会把更多的经典的小例子发布的我的博客上,更多的精品源码,请访问天天源码论坛(www.ttyuanma.com)  

原文地址:https://www.cnblogs.com/tangxueyang/p/2106761.html