次の方法で共有


Repeater Web サーバー コントロールの概要

更新 : 2007 年 11 月

Repeater Web サーバー コントロールは、個別の項目の一覧を作成するデータ連結されたコンテナです。テンプレートを使用して、Web ページにおける個別の項目のレイアウトを定義します。ページを実行すると、コントロールはデータ ソースの各項目に対して、定義されたレイアウトを繰り返し適用します。

このトピックの内容は次のとおりです。

  • 背景

  • コード例

  • クラス リファレンス

背景

Repeater Web サーバー コントロールは、ページで利用できる任意のデータを使用してカスタム一覧を作成する基本的なコンテナ コントロールです。Repeater コントロールには独自の組み込みレンダリング機能がないので、テンプレートを作成して Repeater コントロールのレイアウトを提供する必要があります。ページを実行すると、Repeater コントロールはデータ ソースのレコードに対してループを実行し、各レコードの項目を表示します。

Repeater コントロールには既定の外観がないので、このコントロールを使用して次のような多様な一覧を作成できます。

  • テーブル レイアウト

  • コンマ区切りの一覧 ("a, b, c, d, ..." など)

  • XML 形式の一覧

Repeater コントロールにおけるテンプレートの使用

Repeater コントロールを使用するには、コントロールの内容のレイアウトを定義するテンプレートを作成します。テンプレートには、マークアップとコントロールの任意の組み合わせを含めることができます。テンプレートを定義していない場合、またはどのテンプレートにも要素が含まれていない場合は、アプリケーションを実行してもページにコントロールは表示されません。

Repeater コントロールでサポートされているテンプレートを次の表に示します。

テンプレート プロパティ

説明

ItemTemplate

データ ソースの各データ項目に対して一度ずつ表示される HTML 要素とコントロールが含まれます。

AlternatingItemTemplate

データ ソースの 1 つおきのデータ項目に表示される HTML 要素とコントロールが含まれます。通常、このテンプレートは、項目の表示形式を交互に変更する (ItemTemplate で指定した色と異なる背景色など) 場合に使用します。

HeaderTemplate およびFooterTemplate

一覧の最初と最後にそれぞれ表示されるテキストおよびコントロールが含まれます。

SeparatorTemplate

各項目の間に表示される要素が含まれます。代表的な例はライン (hr 要素を使用) です。

詳細については、「ASP.NET Web サーバー コントロール テンプレート」を参照してください。

Repeater コントロールへのデータの連結

Repeater コントロールは、データ ソースに連結する必要があります。最も一般的なデータ ソースは、SqlDataSource コントロールや ObjectDataSource コントロールなどのデータ ソース コントロールです。また、Repeater コントロールは、IEnumerable インターフェイスを実装する任意のクラスに関連付けることもできます。クラスには、ADO.NET データセット (DataSet クラス)、データ リーダー (SqlDataReader クラスやOleDbDataReader クラス)、またはほとんどのコレクションが含まれます。

データを関連付けるときは、Repeater コントロール全体に対して 1 つのデータ ソースを指定します。テンプレートに Label コントロールまたは TextBox コントロールを追加するなど、Repeater コントロールにコントロールを追加する場合は、データ バインディングの構文を使用してデータ ソースが返す項目のフィールドに個々のコントロールを連結します。データ連結 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" runat="server">
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
      <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label runat="server" ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label runat="server" ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label runat="server" ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1" runat="server" 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" runat="server">
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
      <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label runat="server" ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label runat="server" ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label runat="server" ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1" runat="server" SelectCommand="SELECT [CategoryID], [CategoryName], 
              [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
  </form>
</body>
</html>
x8f2zez5.alert_note(ja-jp,VS.90).gifメモ :

Eval データ連結関数を使用して、ヘッダー、フッター、および区切り記号の各テンプレートにコントロールを連結することはできません。これらのテンプレートにコントロールがある場合は、単に静的にそのプロパティを定義できます。

Web サーバー コントロールにおけるデータ連結の概要については、「チュートリアル : Web ページでの基本的なデータ アクセス」と「方法 : Web フォーム ページに Repeater Web サーバー コントロールを追加する」を参照してください。

Repeater コントロールがサポートするイベント

Repeater コントロールは、複数のイベントをサポートします。サポートされるイベントのうち ItemCreated は、実行時に項目作成プロセスをカスタマイズする手段を提供します。ItemDataBound イベントも Repeater コントロールをカスタマイズする機能を提供します。ただし、このイベントはデータが検査できるようになった後にしか使用できません。たとえば、Repeater コントロールを使用して TO DO リストを表示する場合に、期限の過ぎた項目を赤いテキスト、完了した項目を黒いテキスト、その他のタスクを緑のテキストで表示できます。どちらのイベントを使用しても、テンプレート定義による形式設定をオーバーライドできます。

ItemCommand イベントは、個別の項目でのボタン クリックに応答して発生します。このイベントは、ButtonLinkButton、または ImageButton の各 Web サーバー コントロールを項目のテンプレートに埋め込み、ボタンがクリックされたときに通知を送信できるように設計されています。ユーザーがボタンをクリックすると、イベントがボタンのコンテナである Repeater コントロールに送信されます。ItemCommand イベントは、最も一般的には、Repeater コントロールに対して更新動作と削除動作をプログラミングするために使用されます。すべてのボタンのクリックに対して同じ ItemCommand イベントが発生するので、各ボタンの CommandName プロパティに一意の文字列値を設定することによってクリックされたボタンを特定できます。RepeaterCommandEventArgs パラメータの CommandSource プロパティには、クリックされたボタンの CommandName プロパティが含まれます。

詳細については、「方法 : DataList 項目または Repeater 項目のボタン イベントに応答する」を参照してください。

ページのトップへ

コード例

方法 : Web フォーム ページに Repeater Web サーバー コントロールを追加する

ページのトップへ

クラス リファレンス

Repeater コントロールに関連する主要なクラスの一覧を次の表に示します。

メンバ

説明

Repeater

コントロールのメイン クラスです。

ページのトップへ

参照

参照

DataList Web サーバー コントロールの概要