Repeater クラス

リストに表示される項目ごとに指定されたテンプレートを繰り返し適用することにより、カスタム レイアウトを実現するデータ連結リスト コントロール。

この型のすべてのメンバの一覧については、Repeater メンバ を参照してください。

System.Object
   System.Web.UI.Control
      System.Web.UI.WebControls.Repeater

Public Class Repeater
   Inherits Control
   Implements INamingContainer
[C#]
public class Repeater : Control, INamingContainer
[C++]
public __gc class Repeater : public Control, INamingContainer
[JScript]
public class Repeater extends Control implements INamingContainer

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

Repeater は、テンプレート宣言された基本データ連結リストです。レイアウトやスタイルは組み込まれていないため、コントロールのテンプレートで、レイアウト、書式、およびスタイルの HTML タグをすべて明示的に宣言する必要があります。

Repeater は、HTML タグを複数のテンプレートにわたって分割できる唯一のコントロールです。テンプレートを使用してテーブルを作成するには、 HeaderTemplate にテーブル開始タグ (<table>)、 ItemTemplate にテーブル行タグ (<tr>)、 FooterTemplate にテーブル終了タグ (</table>) を挿入します。

Repeater には、選択サポートまたは編集サポートは組み込まれていません。 ItemCommand イベントを使用して、テンプレートからコントロールに対して生成されたコントロール イベントを処理できます。

Repeater は、 DataSource プロパティによって宣言および参照されたデータ モデルに、 ItemTemplateAlternatingItemTemplate を連結します。 HeaderTemplateFooterTemplate 、および SeparatorTemplate はデータ連結されていません。

Repeater にデータ ソースを設定しても、データが返されない場合は、コントロールは項目を表示せずに HeaderTemplateFooterTemplate を表示します。データ ソースが null 参照 (Visual Basic では Nothing) の場合、 Repeater は表示されません。

少なくとも、 Repeater には ItemTemplate を定義しておく必要があります。ただし、次の表で説明するその他のオプション テンプレートを使用すると、リストの外観をカスタマイズできます。

テンプレート名 説明
ItemTemplate リスト内の項目の内容とレイアウトを定義します。このテンプレートは必須です。
AlternatingItemTemplate このテンプレートを定義すると、0 から始まる奇数のインデックスを持つ交互の項目の内容とレイアウトを決定できます。定義しない場合は、 ItemTemplate が使用されます。
SeparatorTemplate このテンプレートを定義すると、項目 (および交互の項目) の間に区切り記号が表示されます。定義しない場合は、区切り記号は表示されません。
HeaderTemplate このテンプレートを定義すると、リストのヘッダーの内容とレイアウトを決定できます。定義しない場合は、ヘッダーは表示されません。
FooterTemplate このテンプレートを定義すると、リストのフッターの内容とレイアウトを決定できます。定義しない場合は、フッターは表示されません。

注意   このコントロールは、ユーザー入力を表示するために使用できます。ユーザー入力には悪意のあるクライアント スクリプトが含まれている可能性があります。アプリケーションに表示する前に、クライアントから送信された実行スクリプト、SQL ステートメントなどのコードの情報はすべて検査してください。ASP.NET には入力要求の検証機能があり、ユーザー入力の中のスクリプトと HTML をブロックできます。検証サーバー コントロールは、ユーザー入力を査定する目的でも用意されています。詳細については、「 検証サーバー コントロール 」を参照してください。

使用例

[Visual Basic, C#] 単純な Repeater コントロールの使用方法の例を次に示します。最初の Repeater は、テーブル内に項目を表示します。2 番目の Repeater は、カンマ区切りのリストに項目を表示します。

 
<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
 <head>
    <script language="VB" 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>
 
    <h3>Repeater Example</h3>
 
    <form runat=server>
 
       <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 language="C#" 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>
 
    <h3>Repeater Example</h3>
 
    <form runat=server>
 
       <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++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Web.UI.WebControls

プラットフォーム: Windows 2000, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Web (System.Web.dll 内)

参照

Repeater メンバ | System.Web.UI.WebControls 名前空間 | DataGrid | DataList