共用方式為


Repeater Web 伺服器控制項宣告式語法

更新:2007 年 11 月

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

<asp:Repeater
    DataMember="string"
    DataSource="string"
    DataSourceID="string"
    EnableTheming="True|False"
    EnableViewState="True|False"
    ID="string"
    OnDataBinding="DataBinding event handler"
    OnDisposed="Disposed event handler"
    OnInit="Init event handler"
    OnItemCommand="ItemCommand event handler"
    OnItemCreated="ItemCreated event handler"
    OnItemDataBound="ItemDataBound event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnUnload="Unload event handler"
    runat="server"
    Visible="True|False"
>
        <AlternatingItemTemplate>
            <!-- child controls -->
        </AlternatingItemTemplate>
        <FooterTemplate>
            <!-- child controls -->
        </FooterTemplate>
        <HeaderTemplate>
            <!-- child controls -->
        </HeaderTemplate>
        <ItemTemplate>
            <!-- child controls -->
        </ItemTemplate>
        <SeparatorTemplate>
            <!-- child controls -->
        </SeparatorTemplate>
</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 事件建立處理常式,處理從樣板傳送至控制項的控制項事件。

控制項將它的 Item 和 AlternatingItem 樣板繫結至控制項的 DataSourceDataSourceID 屬性所參考的資料結構 (Header, Footer 和 Separator 樣板無法繫結至資料)。如果 Repeater 控制項的 DataSource 屬性已設定,但是未傳回資料,則控制項會呈現 Header 和 Footer 樣板,但是其中沒有項目。如果沒有設定 DataSource 屬性,Repeater 控制項將不會呈現。

警告:

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

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

範例

下列程式碼範例將示範如何使用 DataSourceID 屬性,指定 Repeater 控制項的資料來源。DataSourceID 屬性設定為用來擷取資料之 SqlDataSource 控制項的 ID 屬性。當網頁載入時,Repeater 控制項會自動繫結至 SqlDataSource 控制項所指定的資料來源,並向使用者顯示資料。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>Repeater.DataSourceID Property Example</title>
</head>

  <body>
    <form id="Form1" runat="server">

      <h3>Repeater.DataSourceID Property Example</h3>

      <asp:repeater id="Repeater1"       
        datasourceid="SqlDataSource1"
        runat="server">

        <headertemplate>
          <table border="1">
            <tr>
              <td><b>Product ID</b></td>
              <td><b>Product Name</b></td>
            </tr>
        </headertemplate>

        <itemtemplate>
          <tr>
            <td> <%# Eval("ProductID") %> </td>
            <td> <%# Eval("ProductName") %> </td>
          </tr>
        </itemtemplate>

        <footertemplate>
          </table>

        </footertemplate>
      </asp:repeater>

            <asp:sqldatasource id="SqlDataSource1"          
            connectionstring="<%$ ConnectionStrings:NorthWindConnection%>" 
        selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
        runat="server">
      </asp:sqldatasource>

    </form>      
  </body>
</html>
<%@ page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>Repeater.DataSourceID Property Example</title>
</head>

  <body>
    <form id="Form1" runat="server">

      <h3>Repeater.DataSourceID Property Example</h3>

      <asp:repeater id="Repeater1"       
        datasourceid="SqlDataSource1"
        runat="server">

        <headertemplate>
          <table border="1">
            <tr>
              <td><b>Product ID</b></td>
              <td><b>Product Name</b></td>
            </tr>
        </headertemplate>

        <itemtemplate>
          <tr>
            <td> <%# Eval("ProductID") %> </td>
            <td> <%# Eval("ProductName") %> </td>
          </tr>
        </itemtemplate>

        <footertemplate>
          </table>

        </footertemplate>
      </asp:repeater>

            <asp:sqldatasource id="SqlDataSource1"          
            connectionstring="<%$ ConnectionStrings:NorthWindConnection%>" 
        selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
        runat="server">
      </asp:sqldatasource>

    </form>      
  </body>
</html>

請參閱

參考

Repeater

其他資源

Web 伺服器控制項語法