共用方式為


Repeater Web 伺服器控制項概觀

更新:2007 年 11 月

Repeater Web 伺服器控制項是產生個別項目清單的資料繫結容器 (Container) 控制項。您可使用範本來定義 Web 網頁上個別項目的配置。當執行網頁時,這個控制項會為資料來源中的每個項目重複配置。

這個主題包含:

  • 背景

  • 程式碼範例

  • 類別參考

背景

Repeater Web 伺服器控制項是容器控制項,可允許您從網頁的任何資料建立自訂清單。Repeater 控制項沒有自己的內建呈現,表示您必須建立範本以提供 Repeater 控制項的配置。當網頁執行時,Repeater 控制項會迴圈資料來源中的資料錄,並為每個資料錄呈現一個項目。

因為 Repeater 控制項沒有預設外觀,所以您可以用來建立各種清單,其中包含下列所示:

  • 資料表配置

  • 以逗號分隔的清單 (例如 a, b, c, d 等)

  • XML 格式化清單

搭配 Repeater 控制項使用範本

若要使用 Repeater 控制項,您可以建立定義控制項內容配置的範本。範本可以包含標記和控制項的任何組合。如果未定義任何樣板或是沒有樣板是包含項目的,則當執行應用程式時,控制項不會出現在網頁上。

下表會說明 Repeater 控制項支援的樣板。

樣板屬性

描述

ItemTemplate

包含要為資料來源中的每個資料項目,呈現一次的 HTML 項目和控制項。

AlternatingItemTemplate

包含要為資料來源中的每個其他資料項目,呈現一次的 HTML 項目和控制項。通常,這個範本是用來為替代項目建立不同的外觀,例如與 ItemTemplate 中指定顏色不同的背景顏色。

HeaderTemplateFooterTemplate

包含要在清單開頭和結尾呈現的文字和控制項。

SeparatorTemplate

包含要呈現在每一項目間的項目。常見的範例是一空白行 (使用 hr 項目)。

如需詳細資訊,請參閱 ASP.NET Web 伺服器控制項樣板

將資料繫結至 Repeater 控制項

Repeater 控制項必須繫結至資料來源。最常見的資料來源是資料來源控制項,例如 SqlDataSourceObjectDataSource 控制項。此外,您可以將 Repeater 控制項繫結至任何實作 IEnumerable 介面的類別,其中包含 ADO.NET 資料集 (DataSet 類別)、資料讀取器 (SqlDataReaderOleDbDataReader 類別),或是大部分集合。

當繫結資料時,您就指定了整個 Repeater 控制項的資料來源。當您將控制項加入 Repeater 控制項時,例如當您加入範本中的 LabelTextBox 控制項時,就會使用資料繫結語法,將個別控制項繫結至資料來源傳回的項目欄位。下列範例顯示包含資料繫結 Label 控制項的 ItemTemplate

<%@ 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 id="Head1" >
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:Repeater ID="Repeater1"  DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label  ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label  ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1"  SelectCommand="SELECT [CategoryID], [CategoryName], 
            [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
  </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 id="Head1" >
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:Repeater ID="Repeater1"  DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label  ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label  ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1"  SelectCommand="SELECT [CategoryID], [CategoryName], 
              [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
  </form>
</body>
</html>
注意事項:

您無法使用 Eval 資料繫結函式,繫結頁首、頁尾和分隔符號範本中的控制項。如果在這些範本中有控制項,您可以僅使用靜態方式定義其屬性。

如需 Web 伺服器控制項中的資料繫結概觀,請參閱逐步解說:Web 網頁中的基本資料存取HOW TO:將 Repeater Web 伺服器控制項加入至 Web Form 網頁

Repeater 控制項支援的事件

Repeater 控制項支援幾個事件。其中 ItemCreated 事件讓您能夠在執行階段自訂項目建立處理序。ItemDataBound 事件也能夠讓您自訂 Repeater 控制項,但是要在資料可供檢視後才能進行。例如,如果您使用 Repeater 控制項來顯示待辦清單,便可利用紅色文字來顯示過期項目、黑色文字來顯示完成項目、綠色文字則顯示其他工作。任一事件都可用來覆寫樣板定義的格式。

ItemCommand 事件的引發,是用來回應個別項目中的按鈕按選動作。這個事件是為了讓您將 ButtonLinkButtonImageButton Web 伺服器控制項嵌入項目範本中,然後當按一下按鈕時會加以告知。當使用者按一下按鈕時,就會將事件傳送至按鈕的容器:Repeater 控制項。ItemCommand 事件的最常見用法是將更新及刪除行為設計至 Repeater 控制項。因為每次按鈕按選動作都會引發相同的 ItemCommand 事件,所以您可以將按鈕的 CommandName 屬性設定為唯一的字串值,以判斷所按選的按鈕。RepeaterCommandEventArgs 參數的 CommandSource 屬性包含所按選按鈕的 CommandName 屬性。

如需詳細資訊,請參閱 HOW TO:回應 DataList 或 Repeater 項目中的按鈕事件

回到頁首

程式碼範例

HOW TO:將 Repeater Web 伺服器控制項加入至 Web Form 網頁

回到頁首

類別參考

下表列出與 Repeater 控制項相關的重要類別。

成員

描述

Repeater

控制項的主要類別。

回到頁首

請參閱

參考

DataList Web 伺服器控制項概觀