Web ページのチュートリアルlogin
Web ページのチュートリアル
著者:php.cn  更新時間:2022-04-11 14:20:28

Webフォームリピーター



Repeater コントロールは、コントロールにバインドされた項目の繰り返しリストを表示するために使用されます。


DataSet をリピーター コントロールにバインドする

リピーター コントロールは、コントロールにバインドされた項目の繰り返しリストを表示するために使用されます。リピーター コントロールは、データベース テーブル、XML ファイル、またはその他の項目リストにバインドできます。ここでは、XML ファイルをRepeater コントロールにバインドする方法を説明します。

この例では、次の XML ファイル (「cdcatalog.xml」) を使用します:

<?xml version="1.0" encoding="ISO-8859-1"?>

< ;catalog> ;
<cd>
<title>エンパイア バーレスク</title>
<アーティスト>ボブ・ディラン</アーティスト>
<国>アメリカ</国>
<会社>コロンビア</会社>
<価格>10.90
<年>1985</年>
</cd>
<cd>
<title>心を隠してください</title>
<アーティスト>ボニー・タイラー</アーティスト>
<国>英国</国>
<会社>CBSレコード</会社>
<価格>9.90
<年>1988</年>
</cd>
<cd>
<title>グレイテスト ヒッツ</title>
<アーティスト>ドリー・パートン</アーティスト>
<国>アメリカ</国>
<会社>RCA</会社>
<価格>9.90
<年>1982</年>
</cd>
<cd>
<title>まだ憂鬱です</title>
<アーティスト>ゲイリー・ムーア</アーティスト>
<国>英国</国>
<会社>ヴァージンレコード</会社>
<価格>10.20
<年>1990年</年>
</cd>
<cd>
<title>エロス</title>
<アーティスト>エロス・ラマゾッティ</アーティスト>
<国>EU</国>
<会社>BMG</会社>
<価格>9.90
<year>1997</year>
</cd>
</catalog>

この XML ファイルを表示します: cdcatalog.xml

まず、「System.Data」名前空間をインポートします。 DataSet オブジェクトを操作するには、この名前空間が必要です。 .aspx ページの先頭に次のディレクティブを含めます:

<%@ Import Namespace="System.Data" %>

次に、XML ファイルの DataSet を作成し、初回ロードします。この XML ファイルを DataSet に追加します:

<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
​ dim mycdcatalog=新しいデータセット
​ mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
end if
end sub

次に、.aspx ページに Replyer コントロールを作成します。 <HeaderTemplate> 要素のコンテンツは最初にレンダリングされ、出力に 1 回だけ表示されますが、<ItemTemplate> 要素のコンテンツは DataSet の「レコード」ごとに繰り返され、最後に <ItemTemplate 要素のコンテンツが繰り返し表示されます。 FooterTemplate> 要素 の内容は出力に 1 回だけ表示されます:

<html>
<body>

<form runat="server">
<asp:Repeater id="cdcatalog" runat= "server"&gt;

&lt; headertemplate&gt;
...&lt;/headertemplate&gt;

&lt; itemtemplate&gt;
...
&lt;/itemtemplate&gt;

&lt; footertemplate&gt; /FooterTemplate>

</asp:Repeater>
</form>

</body>
</html>


次に、DataSet を作成し、mycdcatalog DataSet をバインドするスクリプトを追加します。リピーター制御。それから HTML タグを使用してリピーター コントロールにデータを設定し、<%#Container.DataItem("fieldname")%> によってデータ項目を <ItemTemplate> 領域のセルにバインドします:

Instance

<%@ 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>

<!DOCTYPE html>
<html>
<body>

<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">

<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Company</th>
<th>Price</th>
</tr>
</HeaderTemplate>

<ItemTemplate>
<tr>
<td><%#Container.DataItem("title")%> </td>
<td><%#Container.DataItem("artist")%> </td>
<td><%#Container.DataItem("company")%> </td>
<td><%#Container.DataItem("price")%> </td>
</tr>
</ItemTemplate>

<FooterTemplate>
</table>
</FooterTemplate>

</asp:Repeater>
</form>

</html>
</body>

Run例»

「例を実行」ボタンをクリックしてオンライン例を表示します

<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>

<!DOCTYPE html>
<html>
<body>

<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">

<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Company</th>
<th>Price</th>
</tr>
</HeaderTemplate>

<ItemTemplate>
<tr>
<td><%#Container.DataItem("title")%> </td>
<td><%#Container.DataItem("artist")%> </td>
<td><%#Container.DataItem("company")%> </td>
<td><%#Container.DataItem("price")%> </td>
</tr>
</ItemTemplate>

<AlternatingItemTemplate>
<tr bgcolor="#e8e8e8">
<td><%#Container.DataItem("title")%> </td>
<td><%#Container.DataItem("artist")%> </td>
<td><%#Container.DataItem("company")%> </td>
<td><%#Container.DataItem("price")%> </td>
</tr>
</AlternatingItemTemplate>

<FooterTemplate>
</table>
</FooterTemplate>

</asp:Repeater>
</form>

</html>
</body>