ASP.net中的Repeater控件嵌套

本文介绍了一个使用ASP.NET中的Repeater控件来显示嵌套数据的示例。该示例展示了如何通过前后端代码结合的方式,利用两个嵌套的Repeater控件展示分类及其下属的文章标题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非常喜欢使用Repeater控件,它能够生成干净的代码,手写代码写惯了,看着一堆的垃圾代码就头疼,这是我学习时做的一个Demo,留下备忘,应该有更好的代码实现,思考中......

页面代码:

  1. <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> 
  2. <HeaderTemplate><ul></HeaderTemplate> 
  3. <ItemTemplate> 
  4. <li><%# Eval("cate_name") %> 
  5.     <asp:Repeater ID="Repeater2" runat="server"> 
  6.     <HeaderTemplate><ul></HeaderTemplate> 
  7.     <ItemTemplate> 
  8.         <li><%# Eval("art_title") %></li> 
  9.     </ItemTemplate> 
  10.     <FooterTemplate></ul></FooterTemplate> 
  11.     </asp:Repeater> 
  12. </li> 
  13. </ItemTemplate> 
  14. <FooterTemplate></ul></FooterTemplate> 
  15. </asp:Repeater> 

后端代码:

  1. protected void Page_Load(object sender, EventArgs e) 
  2.     if(!IsPostBack) 
  3.     { 
  4.         using(SqlConnection conn= new SqlConnection()) 
  5.         { 
  6.             conn.ConnectionString = ConfigurationManager.ConnectionStrings["testdbConnectionString"].ConnectionString; 
  7.             conn.Open(); 
  8.             using(SqlDataAdapter da = new SqlDataAdapter("select * from category",conn)) 
  9.             { 
  10.                 DataSet ds = new DataSet(); 
  11.                 da.Fill(ds); 
  12.                 Repeater1.DataSource = ds; 
  13.                 Repeater1.DataBind(); 
  14.             } 
  15.         } 
  16.     } 
  17. protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
  18.     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
  19.     { 
  20.         Repeater rep = e.Item.FindControl("Repeater2"as Repeater; 
  21.         DataRowView rowv = (DataRowView)e.Item.DataItem; 
  22.         int cate_id = Convert.ToInt32(rowv["cate_id"]); 
  23.         using (SqlConnection conn = new SqlConnection()) 
  24.         { 
  25.             conn.ConnectionString = ConfigurationManager.ConnectionStrings["testdbConnectionString"].ConnectionString; 
  26.             conn.Open(); 
  27.             using (SqlDataAdapter da = new SqlDataAdapter("select * from article where owner_id=" + cate_id, conn)) 
  28.             { 
  29.                 DataSet ds = new DataSet(); 
  30.                 da.Fill(ds); 
  31.                 rep.DataSource = ds; 
  32.                 rep.DataBind(); 
  33.             } 
  34.         } 
  35.     } 

两个Repeater的嵌套,通过ID关联嵌套部分,输出如下:

转载于:https://www.cnblogs.com/shaoyun/archive/2009/06/22/1542292.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值