ASP.NET Web フォーム - リピーター コントロール
ASP.NETRepeater コントロールは、オリジナルのデータ バインディング コントロールです。このセクションでは、ASP.NET データ バインディング操作における Replyer コントロールの使用法を紹介します。
Replyer コントロールは、コントロールにバインドされた項目の繰り返しリストを表示するために使用されます。
DataSet を Replyer コントロールにバインドします
Replyer コントロールは、コントロールにバインドされた項目の繰り返しリストを表示するために使用されます。リピーター コントロールは、データベース テーブル、XML ファイル、またはその他の項目リストにバインドできます。ここでは、XML ファイルをRepeater コントロールにバインドする方法を示します。
この例では、次の XML ファイル (「cdcatalog.xml」) を使用します。
<?xml version="1.0"coding="ISO-8859-1"?> <catalog> <cd> <title>エンパイア・バーレスク</title> <artist>ボブ・ディラン</artist> <country>USA</country > <company>コロンビア</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>ボニータイラー</artist> <country>イギリス</country> <company>CBS Records</company> <price>9.90</price> <year>1988</year> </cd> <cd> <title>グレイテスト・ヒッツ</title> <artist>ドリー・パートン</artist> <country>アメリカ</country> <company>RCA</company> <price>9.90</price> <year>1982</year> </cd> <cd> <title>スティル ガット ザ ブルース</title> <artist>ゲイリー ムーア</artist> <country>イギリス</country> <company>ヴァージン レコード</company> <price>10.20</price> <year >1990</year> </cd> <cd> <title>エロス</title> <artist>エロス・ラマゾッティ</artist> <country>EU</country> <company>BMG</company> <価格>9.90</価格> <年>1997</年> </cd> </カタログ>この XML ファイルを表示します: cdcatalog.xml
まず、「System.Data」名前空間をインポートします。 DataSet オブジェクトを操作するには、この名前空間が必要です。 .aspx ページの先頭に次のディレクティブを含めます。
<%@ インポート名前空間="System.Data" %>次に、XML ファイルの DataSet を作成し、ページが最初に読み込まれるときに XML ファイルを DataSet に読み込みます。
<script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) end if end sub次に、.aspx ページにリピーター コントロールを作成します。 <HeaderTemplate> 要素のコンテンツが最初にレンダリングされ、出力に 1 回だけ表示されます。一方、<ItemTemplate> 要素のコンテンツは DataSet 内の「レコード」ごとに繰り返されます。 最後に、<FooterTemplate> 要素のコンテンツは次のようになります。出力に 1 回だけ表示されます。
<html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> < FooterTemplate> ... </FooterTemplate> </asp:Repeater> </form> </body> </html>次に、スクリプトを追加して DataSet を作成し、mycdcatalog DataSet を Replyer コントロールにバインドします。次に、HTML タグを使用してRepeater コントロールにデータを設定し、<%#Container.DataItem("fieldname")%> を通じてデータ項目を <ItemTemplate> 領域のセルにバインドします。
例
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table> <tr> <th>タイトル</th> <th>アーティスト</th> <th>国</th> <th>会社</th> <th>価格</th> <th>年</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "国")%></td> <td><%#Container.DataItem("会社")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <FooterTemplate > </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>ヒント: HTML タグについての知識は、このサイトの「HTML リファレンス マニュアル」を参照してください。
<AlternatingItemTemplate> を使用する
<ItemTemplate> 要素の後に <AlternatingItemTemplate> 要素を追加して、出力内の交互の行の外観を記述することができます。以下の例では、テーブルの 1 行おきに明るい灰色の背景が表示されます。
例
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table> <tr> <th>タイトル</th> <th>アーティスト</th> <th>国</th> <th>会社</th> <th>価格</th> <th>年</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "国")%></td> <td><%#Container.DataItem("会社")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <AlternatingItemTemplate > <tr bgcolor="#e8e8e8"> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem("country")%></td> <td><%#Container.DataItem( "会社")%></td> <td><%#Container.DataItem("価格")%></td> <td><%#Container.DataItem("year")%></td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> < /body> </html><SeparatorTemplate> を使用する
<SeparatorTemplate> 要素は、各レコード間の区切り文字を記述するために使用されます。以下の例では、テーブルの各行の間に水平線が挿入されます。
例
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table> <tr> <th>タイトル</th> <th>アーティスト</th> <th>国</th> <th>会社</th> <th>価格</th> <th>年</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "国")%></td> <td><%#Container.DataItem("会社")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <SeparatorTemplate > <tr> <tdcolspan="6"><hr /></td> </tr> </SeparatorTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>上記は、ASP.NETRepeater コントロールの使用方法の概要です。