Repeater控制項中擷取值和控制項

來源:互聯網
上載者:User
之前發過一篇博文,涉及到了在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
         {
           get{ return  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的項和子控制項才能成為可能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.