共用方式為


Repeater Web 伺服器控制項

藉由對清單中每一項目重複指定之樣板的方式,建立可自訂配置的資料繫結清單控制項。

<asp:Repeaterid="Repeater1"      DataSource="<% databindingexpression %>"     runat=server>   <HeaderTemplate>      Header template HTML   </HeaderTemplate>   <ItemTemplate>Item template HTML   </ItemTemplate>   <AlternatingItemTemplate>      Alternating item template HTML   </AlternatingItemTemplate>   <SeparatorTemplate>      Separator template HTML   </SeparatorTemplate>   <FooterTemplate>      Footer template HTML   </FooterTemplate><asp:Repeater>

備註

使用 Repeater 控制項建立基礎樣板資料繫結清單。Repeater 控制項沒有內建的配置或樣式;您必須明確地宣告控制項樣板內的所有 HTML 配置、格式和樣式標記。

Repeater 控制項與其他資料清單控制項不同,它可以讓您將 HTML 片段置於它的樣板中。這樣將可讓您建立像是資料表之類的複雜 HTML 結構。例如,若要在 HTML 表格內建立清單,請將 <table> 標記置於 HeaderTemplate 中來開始此表格。接下來,請將 <tr> 標記、<td> 標記和資料繫結項目置於 ItemTemplate 中來建立表格的列和欄。如果您希望表格中的替代項目有不同的外觀,除了指定的不同樣式之外,請用與 ItemTemplate 相同的內容建立 AlternatingItemTemplate。最後,請將 </table> 標記置於 FooterTemplate 中來完成表格。

下表所列是 Repeater 控制項的不同樣板。

樣板 說明
AlternatingItemTemplate 類似 ItemTemplate 項目,但是在 Repeater 控制項中是以每隔一列 (替代項目) 的方式呈現。您也可以設定 AlternatingItemTemplate 項目的樣式屬性將不同的外觀指定給它。
FooterTemplate 要在所有資料繫結資料列都呈現之後,才會呈現一次的項目。典型的運用是用來結束在 HeaderTemplate 項目中 (使用 </table> 這種標記) 開始的項目。
注意   FooterTemplate 不能資料繫結。
HeaderTemplate 要在所有資料繫結資料列呈現之前呈現一次的項目。典型的運用是用來開始容器項目 (例如資料表)。
注意   HeaderTemplate 項目不能資料繫結。
ItemTemplate 要對資料來源中每一資料列呈現一次的項目。若要在 ItemTemplate 中顯示資料,請宣告一個或多個 Web 伺服器控制項,並且將它們的資料繫結運算式設定成評估 Repeater 控制項的 (亦即容器控制項的) DataSource 中的欄位。下列範例所示為顯示 Label 控制項中含有姓氏之欄位的範例宣告。
First Name:
<asp:Label runat="server"
   Text="<%# Container.DataItem.FirstName %>" />
SeparatorTemplate 要呈現於各資料列間的項目,通常為分行符號 (<br> 標記)、水平線 (<hr> 標記) 等。
注意   SeparatorTemplate 項目不能資料繫結。

Repeater 控制項沒有內建的選取或編輯支援。您可以為控制項的 ItemCommand 事件建立處理常式,來處理從樣板傳送至控制項的控制項事件。

控制項會將它的 ItemAlternatingItem 樣板繫結至控制項之 DataSource 屬性中所參考的資料結構 (HeaderFooterSeparator 樣板不能繫結至資料)。如果設定了 Repeater 控制項的 DataSource 屬性但是沒有傳回資料,控制項會呈現 HeaderFooter 樣板,但是沒有項目。如果沒有設定 DataSource 屬性,Repeater 控制項將不會呈現。

**警告   **文字顯示於 Repeater 控制項前,並不是 HTML 編碼。這樣便可以在文字中的 HTML 標記內嵌入指令碼。如果控制項的值來自使用者輸入,請務必驗證值來協助防止安全性的弱點。

如需 Repeater Web 伺服器控制項之屬性和事件的詳細資訊,請參閱 Repeater 類別文件。

範例

下列範例是示範如何使用 Repeater 控制項來顯示資料來源中的項目。

<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
<head>
   <script runat="server">
      Sub Page_Load(Sender As Object, e As EventArgs)
         If Not IsPostBack Then
            Dim values As New ArrayList()
            
            values.Add(New PositionData("Microsoft", "Msft"))
            values.Add(New PositionData("Intel", "Intc"))
            values.Add(New PositionData("Dell", "Dell"))
            
            Repeater1.DataSource = values
            Repeater1.DataBind()
            
            Repeater2.DataSource = values
            Repeater2.DataBind()
         End If
      End Sub

      Public Class PositionData
         Private myName As String
         Private myTicker As String        
        
         Public Sub New(newName As String, newTicker As String)
            Me.myName = newName
            Me.myTicker = newTicker
         End Sub        
        
         Public ReadOnly Property Name() As String
            Get
               Return myName
            End Get
         End Property        
        
         Public ReadOnly Property Ticker() As String
            Get
               Return myTicker
            End Get
         End Property
      End Class
   </script>
</head>
<body>
   <form runat="server">
      <h3>Repeater Example</h3>
      <b>Repeater1:</b>
      <p>
      <asp:Repeater id=Repeater1 runat="server">
         <HeaderTemplate>
            <table border=1>
               <tr>
                  <td><b>Company</b></td>
                  <td><b>Symbol</b></td>
               </tr>
         </HeaderTemplate>
             
         <ItemTemplate>
            <tr>
               <td> 
                  <%# DataBinder.Eval(Container.DataItem, "Name") %> 
               </td>
               <td> 
                  <%# DataBinder.Eval(Container.DataItem, "Ticker") %>
               </td>
            </tr>
         </ItemTemplate>
             
         <FooterTemplate>
            </table>

         </FooterTemplate>
             
      </asp:Repeater>
      <p>
      <b>Repeater2:</b>
      <p>
      <asp:Repeater id=Repeater2 runat="server">
         <HeaderTemplate>
            Company data:
         </HeaderTemplate>
             
         <ItemTemplate>
            <%# DataBinder.Eval(Container.DataItem, "Name") %> 
            (<%# DataBinder.Eval(Container.DataItem, "Ticker") %>)
         </ItemTemplate>
             
         <SeparatorTemplate>
            , 
         </SeparatorTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
   <script runat="server">
      void Page_Load(Object Sender, EventArgs e) 
      {
         if (!IsPostBack) 
         {
            ArrayList values = new ArrayList();
            values.Add(new PositionData("Microsoft", "Msft"));
            values.Add(new PositionData("Intel", "Intc"));
            values.Add(new PositionData("Dell", "Dell"));
            Repeater1.DataSource = values;
            Repeater1.DataBind();
                
            Repeater2.DataSource = values;
            Repeater2.DataBind();
         }
      }

      public class PositionData 
      {
         private string name;
         private string ticker;

         public PositionData(string name, string ticker) 
         {
            this.name = name;
            this.ticker = ticker;
         }

         public string Name 
         {
            get 
            {
               return name;
            }
         }

         public string Ticker 
         {
            get 
            {
               return ticker;
            }
         }
      } 
   </script>
</head>
<body>
   <form runat="server">
      <h3>Repeater Example</h3>
      <b>Repeater1:</b>
      <p>
      <asp:Repeater id=Repeater1 runat="server">
         <HeaderTemplate>
            <table border=1>
               <tr>
                  <td><b>Company</b></td> 
                  <td><b>Symbol</b></td>
               </tr>
         </HeaderTemplate>
         <ItemTemplate>
            <tr>
               <td> 
                  <%# DataBinder.Eval(Container.DataItem, "Name") %> 
               </td>
               <td> 
                  <%# DataBinder.Eval(Container.DataItem, "Ticker") %>
               </td>
            </tr>
         </ItemTemplate>
         <FooterTemplate>
            </table>

         </FooterTemplate>
      </asp:Repeater>
      <p>
      <b>Repeater2:</b>
      <p>
      <asp:Repeater id=Repeater2 runat="server">
         <HeaderTemplate>
            Company data:
         </HeaderTemplate> 
         <ItemTemplate>
            <%# DataBinder.Eval(Container.DataItem, "Name") %> 
            (<%# DataBinder.Eval(Container.DataItem, "Ticker") %>)
         </ItemTemplate>
         <SeparatorTemplate>
            , 
         </SeparatorTemplate>
      </asp:Repeater>
   </form>
</body>
</html>

請參閱

Web 伺服器控制項 | Repeater 類別