Repeater控件中获取值和控件

本文介绍了如何在Repeater控件中捕获子控件的方法,包括RepeaterItem对象的使用及通过Repeater控件的Items属性访问RepeaterItemCollection对象等内容,并通过示例代码详细解释了实现过程。

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

之前发过一篇博文,涉及到了在GRIEVIEW中捕获子控件的方法。奈何GRIDVIEW过于庞大,在追求效率的今天显得过于笨重。
            正好有在Repeater中捕获子控件的需求,于是在查阅了相关文档和几经失败尝试之后得出了下面的一些经验和收获与大家分享。
首先我们先来了解一下实现以上功能会涉及到的一些知识。以MSND为参考。
  • RepeaterItem对象表示Repeater控件中的项,如标题部分、脚注部分或数据项。
  • Repeater控件的数据项存储在RepeaterItemCollection对象中,通过使用Repeater控件的Items属性可以访问该对象。

  • 可以使用RepeaterItem对象以编程方式访问Repeater控件中某项的属性。

MSDN示例分析 

<%@ Page Language="C#"AutoEventWireup="True"%>
<%@ Import Namespace="System.Data"%>
<html>
<head>
   <script language="C#"runat="server">
     void  Page_Load(Object Sender, EventArgs e)
      {
         if(!IsPostBack)
         {
            ArrayList  values =new  ArrayList();
             values.Add(newPositionData("Item 1","$6.00"));
            values.Add(newPositionData("Item 2","$7.48"));
            values.Add(newPositionData("Item 3","$9.96"));

      //为Repeater准备数据,核心步骤,只有Repeater中已经绑定了数据才

       //可能获取到需要的项和控件
            Repeater1.DataSource = values;
            Repeater1.DataBind();
         }
      }
     void  Button_Click(Object Sender, EventArgs e)
      {       
         Label1.Text ="The Items collection contains: <br>";

        foreach(RepeaterItem  item  in Repeater1.Items)
         { //读取对应项的值      
            Label1.Text += ((DataBoundLiteralControl)item.Controls[0]).Text +
                             "<br>";

           //获取控件

           Label2.Text += ((Label)item.Controls[0].FindControl("lable2")).Text +
                              "<br>";
         }
      }  
      public class  PositionData
      {
        private string item;
        private string price;
         public  PositionData(string  item,string price)
         {
           this.item = item;
           this.price = price;
         }
         public string  Item
         {
           get  { return  item; }
         }
         public string  Price
         {
           getreturn  price; }
         }
      }
   </script>
</head>
<body>
   <form runat=server>
      <h3>Repeater Example</h3>
      <p>   
      <asp:Repeater id="Repeater1"  runat="server">
         <HeaderTemplate>
            <table border=1>
               <tr>
                  <td><b>Item</b></td>
                  <td><b>Price</b></td>

                 <td><b>Label</b></td>
               </tr>
         </HeaderTemplate>
          <ItemTemplate>
            <tr>
               <td> <%# DataBinder.Eval(Container.DataItem,"Item") %> </td>
               <td> <%# DataBinder.Eval(Container.DataItem,"Price") %> </td>

//这里我们添加一个服务器端测试控件

            <td><asp:Label ID="lable2" runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Price") %>'></asp:Label></td>
           

            </tr>
         </ItemTemplate>
         <FooterTemplate>
            </table>
         </FooterTemplate>
      </asp:Repeater>
      <p>
      <asp:Button id=" Button1"Text="Display Items in Repeater"  OnClick="Button_Click"  runat="server"/>
      <br><br>
      <asp:Label id="Label1"  runat="server"/>
   </form>
</body>
</html>

 
总结:
在数据绑定的前提下,获取Repeater的项和子控件才能成为可能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值