|
.NET TIPS [ASP.NET]MultiView/Viewコントロールでマルチビューのページを作成するには?[2.0のみ、C#、VB]山田 祥寛2006/01/20 |
![]() |
|
|
|
「TIPS:[ASP.NET]1つのWebフォーム内で一覧/詳細画面を切り替えるには?」では、PlaceHolderコントロールを利用して、ページ内のコンテンツを複数のビューに分割表示する方法を紹介した。しかし、PlaceHolderコントロール自体は、もともとマルチビューの管理を目的としたものではないため、ビューが2個3個と増えてくるに従って、ビュー切り替えのコードも複雑にならざるを得なかった。
しかし、諸兄がASP.NET 2.0を使用しているならば、もはやPlaceHolderコントロールに頼る必要はない。ASP.NET 2.0では1つのWebフォームで複数のビューを管理するための専用のコントロールとして、新たにMultiViewコントロールとViewコントロールが提供されたからだ。MultiViewコントロールを利用することで、配下のViewコントロールによって定義されるビューのいずれを表示するかを簡単に制御できるようになる。
それでは具体的なサンプル・コードを見てみよう。以下は、前掲のTIPSで紹介した一覧/詳細表示のサンプル・プログラムを、MultiView/Viewコントロールを使って書き直したものである。本サンプル・プログラムでは、一覧/詳細画面を(同じくASP.NET 2.0で追加された)GridViewコントロール/DetailsViewコントロールとデータソース・コントロール(DataSourceControlの派生クラス)によって作成しているが、これらのコントロールに関する詳細は、別稿「データアクセス・コントロールとクリッカブル・マップ」を参照していただきたい。
なお、本稿のサンプル・プログラムを実行するに当たっては、あらかじめデータベース上に以下のようなレイアウトを持つbooksテーブルを作成し、適当なデータをセットしておく必要がある。
| フィールド名 | データ型 | 概要 |
| isbn | VARCHAR(30) | ISBNコード(主キー) |
| title | VARCHAR(255) | 書名 |
| price | INT | 価格 |
| publish | VARCHAR(100) | 出版社 |
| published | DATETIME | 出版日 |
| booksテーブルのフィールド・レイアウト | ||
それでは、コードを眺めてみよう。
|
|
| 一覧/詳細画面を切り替えるためのWebフォーム(C#版:multiview_cs.aspx) |
|
|
| 一覧/詳細画面を切り替えるためのWebフォーム(VB版:multiview_vb.aspx) |
冒頭で述べたように、MultiViewコントロールは配下で定義された複数のビュー(Viewコントロール)を管理するためのコントロールだ。MultiViewコントロールの使い方は極めて単純で、表示するビューを切り替えるにはActiveViewIndexプロパティで表示したいビューのインデックス番号を指定すればよい。デフォルトの値は「-1」(非表示)なので、もしもデフォルトでいずれかのビューを表示したい場合には、あらかじめ対応するインデックス番号(0始まり)を指定しておく。
当然、ActiveViewIndexプロパティは、コードから操作することも可能だ。例えば、上の例では、それぞれのビューに配置したGridViewコントロールのSelectedIndexChangedイベント、もしくはHyperLinkコントロールのClickイベントが発生したタイミングで、ActiveViewIndexプロパティを再設定している。
以上を理解できたら、さっそくサンプル・プログラムを起動してみよう。以下のようにグリッド上の[選択]ボタン、または詳細画面の[一覧へ]リンクをクリックすることで、一覧/詳細画面が切り替われば成功だ。
![]() |
![]() |
| サンプル・アプリケーションの実行結果 |
| グリッド上の[選択]ボタン、または詳細画面の[一覧へ]リンクをクリックすることで、一覧画面(上)と詳細画面(下)が切り替わる。 |
なお余談ではあるが、本稿ではコード簡素化のためにデータベースへの接続文字列をSqlDataSourceコントロールのConnectionString属性にハード・コーディングしている。しかし、将来的な保守性を考慮した場合、こうした環境依存の情報は設定ファイルとして外部化するのが正しいアプローチである。接続文字列を外部化する方法については、後日、「TIPS:[ASP.NET]データベース接続文字列を外部化するには?」で紹介する予定だ。![]()
| カテゴリ:Webフォーム 処理対象:MultiViewコントロール カテゴリ:Webフォーム 処理対象:Viewコントロール 使用ライブラリ:MultiViewコントロール 使用ライブラリ:Viewコントロール 使用ライブラリ:GridViewコントロール 使用ライブラリ:DetailsViewコントロール 関連TIPS:[ASP.NET]1つのWebフォーム内で一覧/詳細画面を切り替えるには? 関連TIPS:[ASP.NET]データベース接続文字列を外部化するには?(後日公開予定) |
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




