金宏 和實(かねひろ かずみ)
 富山県高岡市 株式会社イーザー副社長。先日,次男の高校の周年行事で茂木健一郎さんの講演があったので,聞きに行ってきました。お話はもちろん,お上手なのですが,質疑応答で,学生の言いたいことだけではなく,その学生の考え方や性格までを即座に把握されることに感心しました。

 今回はデータ連結コントロールの締めくくりとして,ASP.NET3.5で追加されたListViewコントロールを紹介します。「Repeaterコントロール+GridViewコントロール+α=ListViewコントロール」という珍妙なタイトルですが,ListViewコントロールはテンプレートで設定した内容だけを出力するという意味で,ASP.NET1.0から存在するRepeaterコントロールを継承しています。また,編集,削除,ページング,ソートという機能を備えているという面では,ASP.NET2.0で追加されたGridViewコントロールに似ています。それに加え,新規レコードの登録もできるので,データ連結コントロールもListViewで極まったという感があります。

 まずは,温故知新ということでRepeaterコントロールを振り返ってみましょう。

Repeaterコントロール

 Repeaterコントロールはシンプルなデータ連結コントロールです。テンプレートで指定されたコンテンツを繰り返し出力するだけのコントロールです。前回まで見てきたGridViewやDetailsViewコントロールのようにテーブルタグを自動的に出力しません。ですから,ちょっとしたデータの表示に都合良く使えます。

画面1
画面1

 画面1は,Webフォームを追加して,Repeaterコントロールを配置したところです。SqlDataSourceには本連載で以前より使用しているhinmokuテーブル(図1)からhidとhnameを取得するSQL文を設定しました。

図1●これまで作成したテーブル
図1●これまで作成したテーブル
[画像のクリックで拡大表示]

 「コントロールのテンプレートを編集するにはソースビューに切り替えてください。」とRepeaterコントロール上に表示されているように,Repeaterコントロールにはデザインビューでビジュアルにテンプレートを編集する機能がありません。ソースビューで編集していきます(リスト1)。

リスト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>