鹿我所录的博客

记录我在学习C#中的点点滴滴,记录下以备后来人借鉴。

 

Repeater嵌套Repeater的结构:对于 datalist 控件也是有效的。记下以防忘记了

在写程序的时候, Repeater嵌套绑定Repeater  是常有事情。下面给出了相应的代码,记下,以便下次使用。

下面是 aspx 代码:

1 <asp:Repeater ID="Repeater1" runat="server"
2 onitemdatabound="Repeater1_ItemDataBound">
3 <HeaderTemplate>
4 <table width="100%" border="1" cellspacing="1" cellpadding="1">
5 </HeaderTemplate>
6
7 <ItemTemplate>
8 <tr><td><%# Eval("Title") %></td></tr>
9
10 <asp:Repeater ID="Repeater2" runat="server">
11
12 <ItemTemplate>
13 <tr><td><%# Eval("Title") %></td></tr>
14
15
16 </ItemTemplate>
17
18
19 </asp:Repeater>
20
21
22 </ItemTemplate>
23
24
25 <FooterTemplate></table></FooterTemplate>
26 </asp:Repeater>

下面是 .cs 代码 也就是后台代码

1 protected void Page_Load(object sender, EventArgs e)
2 {
3 if (!IsPostBack)
4 {
5 bangdingdata();// 绑定数据项,这里只绑定第一个Repeater
6  
7
8 }
9
10
11 }
12
13
14
15
16  /// 在 ItemDataBound 事件中,将Repeater2绑定起来
17   protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
18 {
19 if (e.Item.ItemType == ListItemType.Item) //定义当前项是项模板
20   {
21 Repeater rpt2 = (Repeater)e.Item.FindControl("Repeater2"); //找到第二个 Repeater
22
23 DataRowView drv = (DataRowView)e.Item.DataItem;
24 //获取当前项目 所在的行,也就是数据行,找到数据行中的一个字段 ID
25 int typeid = Convert.ToInt32(drv["ID"]);
26
27 opclass opc = new opclass();
28
29 rpt2.DataSource = opc.ExectDataSet(string.Format("Select [Title] from[Reply] where [lyID]={0}", typeid));
30 rpt2.DataBind();
31
32 // 以找到的 ID 为依据,将 Repeater2 绑定。
33
34
35
36
37 }
38
39 }
40
41
42 private void bangdingdata()
43 {
44 opclass opc = new opclass();
45
46 this.Repeater1.DataSource = opc.ExectDataSet("Select * From [liuyan]");
47
48 this.Repeater1.DataBind();
49
50
51 }

posted on 2011-07-09 23:17  鹿我所录  阅读(282)  评论(0编辑  收藏  举报

导航