今回はデータ連結コントロールの締めくくりとして,ASP.NET3.5で追加されたListViewコントロールを紹介します。「Repeaterコントロール+GridViewコントロール+α=ListViewコントロール」という珍妙なタイトルですが,ListViewコントロールはテンプレートで設定した内容だけを出力するという意味で,ASP.NET1.0から存在するRepeaterコントロールを継承しています。また,編集,削除,ページング,ソートという機能を備えているという面では,ASP.NET2.0で追加されたGridViewコントロールに似ています。それに加え,新規レコードの登録もできるので,データ連結コントロールもListViewで極まったという感があります。
まずは,温故知新ということでRepeaterコントロールを振り返ってみましょう。
Repeaterコントロール
Repeaterコントロールはシンプルなデータ連結コントロールです。テンプレートで指定されたコンテンツを繰り返し出力するだけのコントロールです。前回まで見てきたGridViewやDetailsViewコントロールのようにテーブルタグを自動的に出力しません。ですから,ちょっとしたデータの表示に都合良く使えます。
画面1は,Webフォームを追加して,Repeaterコントロールを配置したところです。SqlDataSourceには本連載で以前より使用しているhinmokuテーブル(図1)からhidとhnameを取得するSQL文を設定しました。
「コントロールのテンプレートを編集するにはソースビューに切り替えてください。」とRepeaterコントロール上に表示されているように,Repeaterコントロールにはデザインビューでビジュアルにテンプレートを編集する機能がありません。ソースビューで編集していきます(リスト1)。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Repeaterを使ってみる</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<%#Eval("hid")%><%#Eval("hname") %><br />
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyLocalDBConnectionString %>"
SelectCommand="SELECT [hid], [hname] FROM [hinmoku]"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
ItemTemplateを追加して,Evalメソッドによる片方向のデータバインドを記述しています。以下の部分です。
<ItemTemplate>
<%#Eval("hid")%><%#Eval("hname") %><br />
</ItemTemplate>