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 プロパティによって宣言および参照されたデータ モデルに、 ItemTemplate と AlternatingItemTemplate を連結します。 HeaderTemplate 、 FooterTemplate 、および SeparatorTemplate はデータ連結されていません。
Repeater にデータ ソースを設定しても、データが返されない場合は、コントロールは項目を表示せずに HeaderTemplate と FooterTemplate を表示します。データ ソースが 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