SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

ASP.NET 3.5の新しいListViewコントロールを使用する

最小限のコードでデータの表示/CRUDができるListViewコントロール

ダウンロード サンプルソース (4.8 KB)

単純なデータバインディングの例

 ListViewコントロールがサポートするさまざまなテンプレートについて理解したところで、次に、新しいサンプルWebサイトを作ってみましょう。

 このサンプルには「ListViewExample」という名前を付けます(ソースコードは本稿冒頭のリンクからダウンロードできます)。Webサイトを作成したら、メニューから[Website]→[Add New Item]を選択し、「SimpleListView.aspx」という名前の新しいASP.NETページを追加します(リスト1を参照)。このページでは、ListViewコントロールを使用して、AdventureWorksサンプルデータベース内のProductテーブルから製品データを表示します。

リスト1 SimpleListViewページ
<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
 <link rel="Stylesheet" type="text/css" href="StyleSheet.css" />
 <title>Simple Data Binding Example using ListView control</title>
</head>
<body>
 <form id="form1" runat="server">
  <div>
   <asp:ListView runat="server" ID="productsView" 
    DataSourceID="productSource" DataKeyNames="ProductID">
    <LayoutTemplate>
     <table cellpadding="2" runat="server" id="tblProducts" 
      style="width:460px">
      <tr runat="server" id="itemPlaceholder">
      </tr>
     </table>
     <asp:DataPager runat="server" ID="DataPager" PageSize="3">
      <Fields>
       <asp:NumericPagerField ButtonCount="10" 
        PreviousPageText="<--" NextPageText="-->" />
      </Fields>
     </asp:DataPager>
    </LayoutTemplate>
    <ItemTemplate>
     <tr id="row" style="height:72px" runat="server">
      <td valign="top" class="ProductInfo">
       Product ID : <asp:Label ID="lblProductID" runat="server" 
        Text='<%#Eval("ProductID") %>' />
       <br />
       Name : <asp:Label ID="lblName" runat="server" 
        Text='<%#Eval("Name") %>' />
       <br />
      Product Number : <asp:Label ID="lblProductNumber" 
       runat="server" Text='<%#Eval("ProductNumber") %>' />                                               
      </td>      
     </tr>
    </ItemTemplate>
    <ItemSeparatorTemplate>
     <tr id="separator" style="height:10px" runat="server">
      <td>--------------------------------------------------------  
        ------------------</td>
     </tr>
    </ItemSeparatorTemplate>
    <EmptyDataTemplate>
     There are no products!
    </EmptyDataTemplate>
   </asp:ListView>    
   <asp:SqlDataSource id="productSource" runat="server" 
    DataSourceMode="DataSet"
    ConnectionString="<%$ ConnectionStrings:AdventureWorks%>" 
    SelectCommand="SELECT ProductID,Name,ProductNumber,
    Color,ListPrice FROM Production.Product">
   </asp:SqlDataSource>
  </div>
 </form>
</body>
</html>

 リスト1では、SqlDataSourceコントロールが、ConnectionStringプロパティとSelectCommandプロパティを適切な値に設定することにより、AdventureWorksデータベースのProductテーブルからデータを取得します。ConnectionStringプロパティは、ASP.NET式を通じて「web.config」ファイルから接続文字列を取得します。

 筆者のテストマシンでは、接続文字列は「web.config」内で次のように定義されています。

   <connectionStrings>
    <add name="AdventureWorks"  
     connectionString="server=localhost;uid=sa;
     pwd=thiru;database=AdventureWorks;"/>
    </connectionStrings>

 SqlDataSourceのプロパティを設定したら、次は、ListViewコントロールを通じてそのデータを表示します。LayoutTemplateに含まれるマークアップは次のとおりです。

   <LayoutTemplate>
    <table cellpadding="2" runat="server" id="tblProducts" 
     style="width:460px">
     <tr runat="server" id="itemPlaceholder">
     </tr>
    </table>
    <asp:DataPager runat="server" ID="DataPager" PageSize="3">
     <Fields>
      <asp:NumericPagerField ButtonCount="10" 
       PreviousPageText="<--" NextPageText="-->" />
     </Fields>
    </asp:DataPager>
   </LayoutTemplate>

 LayoutTemplateは、ListViewコントロールを通じて生成される出力のコンテナを定義します。LayoutTemplateコントロールは、ListViewコントロールの全体のレイアウトを定義するtableコントロールに加えて、<asp:DataPager>コントロールも定義します。このコントロールは、ListViewコントロールに対してページング機能を実現するものです。DataPagerコントロールを使用すると、データのページングが可能となり、IPageableItemContainerインターフェイスを実装するすべてのデータバインドコントロールに対して、ナビゲーションコントロールを表示できます(この処理はListViewコントロールが行います)。

 DataPagerコントロールとデータバインドコントロールを関連付けるには、次の2つの方法があります。

  1. DataPagerコントロールのPagedControlIDプロパティをデータバインドコントロールの名前に設定する。
  2. DataPagerコントロールをデータバインドコントロール階層内に配置する。ListViewコントロールの場合は、DataPagerコントロールをLayoutTemplate要素内に配置できます。

 DataPagerのPageSizeプロパティを設定することで、各データページに表示される項目数を制御できます。QueryStringFieldプロパティを設定して、ページをサーバーに送信する方法を変更することもできます。

 DataPagerコントロール内でNumericPageFieldテンプレートを指定すると、ユーザーは、ページ番号を選択することによって特定のページに移動できます。

   <asp:NumericPagerField ButtonCount="10" 
      PreviousPageText="<--"
      NextPageText="-->" />

 ItemTemplate要素は、Eval()文を通じてデータソースコントロールからデータを取得することにより、各レコードの詳細にマークアップを適用します。

 図1は、ブラウザ内でページに移動したときに生成される出力を示しています。

図1 単純なListView。Productデータを取得するSqlDataSourceコントロールにListViewコントロールをデータバインドすることによって生成される出力
図1 単純なListView。Productデータを取得するSqlDataSourceコントロールにListViewコントロールをデータバインドすることによって生成される出力

次のページ
ListViewコントロールでのデータの編集

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Thiru Thangarathinam(Thiru Thangarathinam)

オブジェクト指向アプリケーション開発方法論を用いたアプリケーションのアーキテクチャ設計、設計、開発、および実装に関して約6年の経験を持つ。ソフトウェアライフサイクル(設計、開発およびテスト)にも精通。ASP.NET、.NET Framework、Visual C#.NET、Visual Basic.NET、ADO.NET、XML Webサービス、および.NET Remotingのエキスパートであり、MCAD...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2908 2008/09/03 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー