特集:Visual Studio 2008&ASP.NET 3.5

ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part III

山田祥寛(http://www.wings.msn.to/
2008/03/14
Page1 Page2 Page3 Page4

 本特集は、ASP.NETアプリケーション開発者向けにVisual Studio 2008(以降、VS 2008)およびASP.NET 3.5の新機能を紹介するものだ。Part I、IIでは主に統合開発環境(VS 2008)としての新機能について解説してきたが、もちろん、今回の変更点はVS 2008におけるものばかりではない。Part IIIそして次回のPart IVでは、統合開発環境としての機能から離れて、ASP.NET 3.5本体における新機能について紹介していく。

 いうまでもなく、ASP.NET 3.5とは.NET Framework 3.5に含まれるWebアプリケーション開発向けフレームワークであるASP.NETの最新バージョンだ。そしてASP.NETアプリケーション開発者がまず押さえておくべきASP.NET 3.5の新機能は、新しいコントロールと、ASP.NET AJAXの2点である。

 ASP.NET AJAXに属するコントロールを除くと、純粋にASP.NET 3.5で追加されたコントロールには、ListView、DataPager、LinqDataSourceの3種類がある。今回はこれら3つのコントロールについて、実際にサンプル・プログラムを作りながら解説していく。

新しいデータアクセス・コントロール − ListViewコントロール −

 ひと言でいうならば、ListViewコントロールは非定型のリストを生成するためのデータアクセス・コントロールだ。もっとも、これだけだと数ある従来のデータアクセス・コントロールとの違いが分かりにくいかもしれない。ASP.NET 2.0では、すでにGridView(ASP.NET 1.xではDataGrid)をはじめ、DataList、Repeaterコントロールなど、リストを生成するためのコントロールがいくつも提供されているからだ。

 ListViewコントロールそのものの説明に入る前に、まずはこれら既存のデータアクセス・コントロールとListViewコントロールとの違いを、表にまとめてみよう。

コントロール 登録 編集/更新 ソート ページング DS テンプレートの種類 出力
Repeater(1.0)
×
×
×
×
テンプレートで指定されたコンテンツのみを出力
DataList(1.0)
×
×
×
<table>/<span>タグなどを自動生成*a
GridView(2.0)*b
×
<table>タグなどを自動生成
ListView(3.5)
テンプレートで指定されたコンテンツのみを出力
データアクセス・コントロールの機能比較(リスト系のみ)
カッコ内は含まれる.NET Frameworkのバージョン。また、「DS」はデータソース・コントロールへの対応の度合いを表す。
*a RepeatLayoutプロパティによって、自動生成されるタグは変動する。
*b GridViewコントロールは、ASP.NET 1.xではDataGridコントロールとして提供されていたもの。これはASP.NET 2.0以降でも利用自体は引き続き可能であるが、特別な理由がない限り、新しいGridViewコントロールを利用するべきである。

 まず、Repeaterコントロールはテンプレートで指定されたコンテンツを繰り返し出力する、最もシンプルなデータアクセス・コントロールだ。余計なタグを自動生成しないことから、ちょっとしたリストやHTML以外の形式のコンテンツを生成する*1には便利であるが、半面、データ編集、ソート/ページングなどの機能を持ったリストの実装には不向きである(不可ではないが、複雑なコーディングを要する)。

 また、フォーム・デザイナでの編集に対応しておらず、テンプレートを定義するにはすべてコード・エディタ上から行わなければならないという制限もある。

*1 例えば、「.NET TIPS:[ASP.NET]データベースからRSSフィード情報を生成するには?」にあるような例を想定してみるとよいだろう。

 もう少し高度な機能を備えたデータアクセス・コントロールとしては、DataListコントロールもあるが、こちらもページング/ソートなどの機能は備えておらず、また、ASP.NET 1.xから提供されていたコントロールである性質上、(ASP.NET 2.0で追加された)データソース・コントロールとの連携が十分でないなどの問題がある(連携自体は可能であるが、定型的なデータ編集に際しても微細なコーディングが必要となる)。ASP.NET 2.0で追加されたGridView/DetailsView/FormViewなどのコントロールに比べると、どうしても使い勝手の悪さが目立っていた。

 そして、ASP.NET 2.0で登場したGridViewコントロールは、データ編集からソート/ページング機能までを備えた高機能なデータアクセス・コントロールである。また、テンプレート機能を利用することで、いわゆるグリッド表だけではなく、かなり柔軟なレイアウトのリストも生成できることから、高機能なリストを生成するには手放せないコントロールでもある。

 ただし、もともと表を生成することを目的としたコントロールであることから、<table>タグなどテーブル系のタグが必ず出力されてしまうという問題がある。これはシンプルなページではそれほど問題になることはないが、微細なレイアウトを要求されるページではデザインが崩れる原因となるものだ。

 以上を総括すると、要はASP.NET 2.0の段階では「データ編集やページング/ソートなどの機能は利用したい、しかし、余計なタグは出力してほしくない」という状況で利用できるコントロールが存在しなかったわけだ。そのような状況の下で登場したのが、ListViewコントロールなのである。

 前掲の表をご覧いただいても分かるように、ListViewコントロールでは「基本的なデータ編集からページング/ソートなどの機能を備える」とともに、「テンプレートで定義された以外のコンテンツを出力しない」という性質を持っている。

 例えば、GridViewコントロールでTemplateFieldフィールドだけを利用して、リストを生成しているような局面では、今後はListViewコントロールを優先して利用するべきだろう。また、Repeater/DataListコントロールを利用してきた大部分のケースも、基本はListViewコントロールで賄うことができる。今後は、

  • 定型的なグリッド表はGridViewコントロールで
  • 非定型リストはListViewコントロールで

という使い分けになっていくものと思われる。

■ListViewコントロールを使ったサンプル

 以上、やや前置きが長くなったが、ListViewコントロールの位置付けが理解できたところで、ListViewコントロールを使った具体的なサンプル・アプリケーションを見ていくことにしよう。

[1]リストに表示するためのデータソースを用意する

 まずは、リストに表示するために、以下のような書籍情報(Bookテーブル)をデータベース上に作成しておこう。また、Bookテーブルには適宜、サンプル・データとして適当な情報をあらかじめセットしておくものとする。

フィールド名 データ型 概要
isbn VARCHAR(20) ISBNコード(主キー)
title VARCHAR(100) 書籍タイトル
price INT 価格
publish VARCHAR(20) 出版社
publishDate DATETIME 発売日
Bookテーブルのフィールド・レイアウト

[2]新規のWebフォームを作成する

 新規のWebフォーム(ListView.aspx)を作成したら、フォーム・デザイナにより以下の画面の要領でListViewコントロールを配置する。

図1 Webフォーム(ListView.aspx)のレイアウト
ツールボックスからListViewコントロールを配置する。

[3]データ構成ウィザードを実行する

 ListViewコントロールを配置した直後の時点では、まだ具体的なデータはバインドされていないし、テンプレートも定義されていないので、単なる灰色のボックスが表示されるだけだ。

 そこで次に、ListViewコントロールに表示すべきデータソースの内容を定義する。データソースを定義するには、ListViewコントロールの右上から[ListViewタスク]メニューを表示して[データソースの選択]−[<新しいデータソース>]を選択すればよい。

 これにより、データソース構成ウィザードが起動する。VS 2008ではデータを取得する場所として「LINQ」の項目が新たに追加されているが、このウィザード自体は前バージョンからおなじみのものだ。

図2 [データソース構成ウィザード]ダイアログ
ListViewコントロールの右上から[ListViewタスク]メニューを表示して[データソースの選択]から「<新しいデータソース>」を選択することで、このダイアログが表示される。

 上の画面のような[データソース構成ウィザード]ダイアログが起動するので、以下の表の要領でデータソースの取得に必要な情報を設定する。データソース構成ウィザードの詳細については、拙稿「無償データベース SQL Server 2005 Express Editionを使ってみよう」が詳しいので、こちらも併せて参照していただきたい。

項目 概要
データの種類 データベース
データソースID sds
データ接続の選択 MyDB
Selectステートメントの構成 テーブル Book
isbn、title、price、publishDate、descriptionをチェック
詳細設定 [INSERT、UPDATE、およびDELETEステートメントの生成]をチェック
データベース構成ウィザードの設定
[データ接続の選択]欄で設定している「MyDB」はデータベースへの接続名であるものとする。接続名は、もちろん任意の名前を定義して構わない。


 INDEX
  Visual Studio 2008&ASP.NET 3.5
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part I
    1.JavaScriptサポートを大幅に強化
    2.外部のJavaScriptライブラリやサービス・メソッドも認識可能
    3.サービス・メソッドを利用する場合/自作ライブラリにもツール・ヒントを表示
    4.機能強化されたJavaScriptのデバッグ機能
 
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part II
    1.CSSサポートもますます使いやすく(1)
    2.CSSサポートもますます使いやすく(2)
    3.マルチターゲッティング機能/分割ビュー
    4.マスタ・ページのネスト機能/エクステンダ・ウィザード
 
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part III
  1.新しいデータアクセス・コントロール − ListViewコントロール −(1)
    2.新しいデータアクセス・コントロール − ListViewコントロール −(2)
    3.より柔軟なページャの配置を可能にする − DataPagerコントロール −
    4.ASP.NETページでLINQ機能を利用する − LinqDataSourceコントロール −
 
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part IV
    1.UpdatePanelコントロールの適用範囲が拡大
    2.ロール・アクセスに対応したアプリケーションサービス・ブリッジ
    3.Webサービス・ブリッジがWCFをサポート


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間