.NET TIPS

[ASP.NET]GridViewコントロールの表示データを特定条件で絞り込むには?[2.0、3.0、3.5、C#、VB]

山田 祥寛
2008/09/18

 「TIPS:[ASP.NET]GridViewコントロールでデータソースの内容を表示するには?」で紹介したように、GridView+SqlDataSourceコントロールを利用することで、データベースの内容を限りなくコーディングレスでグリッド表に整形できる。

 しかし、単にテーブルの内容をそのまま表示するだけではなく、何かしらユーザーから指定された条件に応じて、動的にグリッド表の内容を変更したいというケースも多々あるはずだ。そのような場合にもデータソース・コントロールのパラメータ機能を利用することで、容易に条件値の引き渡しを実現できる。

 次の画面は、ユーザーによる条件指定を可能にしたサンプル・プログラムの実行例である。

[出版社を選択]で「毎日コミュニケーションズ」を選択
本稿で作成するサンプル・アプリケーション
選択ボックスで選択された出版社に対応する書籍情報のみを表示する。

 本稿で紹介するのは、上の画面のように選択ボックスで指定された出版社に属する書籍情報だけをグリッド表に絞り込み表示するサンプルである。

 なお、グリッド表を生成する基本的な方法については、「TIPS:[ASP.NET]GridViewコントロールでデータソースの内容を表示するには?」の内容を参照いただきたい。本稿も、以降では上記のTIPSで作成したBasic.aspxをベースに、差分の手順のみを紹介する。

1. サーバ・コントロールを配置する

 既存のBasic.aspxに対して、フォーム・デザイナから以下の画面の要領でDropDownListコントロールを配置する(ファイル名はFilter.aspxとする)。また、表の要領でDropDownListコントロールのプロパティを設定しておこう。

Webフォーム(Filter.aspx)のフォーム・レイアウト(差分のみ)
以下のコントロールを配置し、プロパティを設定する。
  DropDownListコントロール(IDは「list」)。
プロパティ名 設定値
AppendDataBoundItems True
AutoPostBack True
Items 出版社を選択

 AppendDataBoundItemsプロパティは、あらかじめ宣言されたItemsプロパティの内容をデータバインド時にそのままリスト項目として残すかを決めるパラメータである。このプロパティがFalseである場合には、DropDownListコントロールにデータをバインドすると、Itemsプロパティで指定されていた項目がクリアされてしまうので要注意だ。

 AutoPostBackプロパティは、選択ボックスの選択値を変更したタイミングでポストバックを発生させるかを決定する。本サンプルでは選択ボックスを指定し直したタイミングでデータのリフレッシュを行いたいので、このプロパティをTrueに設定しておく必要がある。

2. 選択ボックスにデータをバインドする

 選択ボックスに選択可能な出版社名をバインドしておこう。DropDownListコントロールにデータをバインドするには、コントロール右肩のタスク・メニューから[データソースの選択]を選択すればよい。

[データ ソース構成ウィザード]の[データ ソースの選択]

 上の画面のような[データ ソース構成ウィザード]ダイアログが起動するので、[データ ソースの選択]から「<新しいデータソース>」を選択する。あとは、前述のTIPSで紹介したのと同じ手順で、データソースにかかわる情報を定義すればよい。

項目 設定値
データの種類 データべース
データソースID sds_list
データ接続の選択 MyDB(Web.configで定義された接続名)
Selectステートメントの構成
テーブル名 book
列名 publish
一意の行のみ返す チェック
[データ ソース構成ウィザード]の設定

 一連の作業の後、[完了]ボタンをクリックすると最初の画面に戻るので、[DropDownListで表示するデータフィールドの選択][DropDownListの値のデータフィールドの選択]には、それぞれ「publish」を選択しておく。これで、選択ボックスにはbookテーブルに登録済みの出版社一覧が表示されるようになる。

3. SqlDataSourceコントロールにパラメータを関連付けする

 最後に、GridViewコントロールに関連付けられたSqlDataSourceコントロール「sds」が、選択ボックスからの選択値を受け取れるように設定しておく必要がある。

 データソースの設定を変更するには、SqlDataSourceコントロールsdsの右肩からタスク・メニューを開き、[データソースの構成]を選択すればよい。

 [データソース構成ウィザード]が開くので、[Selectステートメントの構成]ページまで移動し、[WHERE]ボタンをクリックする。

[データ ソース構成ウィザード]の[Selectステートメントの構成]ページ

 すると、次の[WHERE句の追加]ダイアログが開く。

[WHERE句の追加]ダイアログ(1)
publishフィールドの値がDropDownListコントロール「list」の選択値に等しいものを抽出する、という条件を設定する。

 絞り込み条件を指定するために、上の画面の要領で条件式を入力してほしい。これによって、publishフィールドの値がDropDownListコントロール「list」の選択値に等しいものを抽出する、という意味になる。条件を入力できたら[追加]ボタンをクリックすることで、WHERE句が追加される。

 ちなみに、SqlDataSourceコントロールのパラメータとして指定できるのは、サーバ・コントロールの値だけではない。ポスト・データやクエリ情報、クッキー、セッションなどの値をパラメータに割り当てることもできる。例えば、以下はセッション・データ「price」で指定された値以上の書籍情報を絞り込みたい場合の指定例である。

[WHERE句の追加]ダイアログ(2)
セッション・データ「price」で指定された値以上の書籍情報を絞り込みたい場合の条件設定。

 以上の手順を終えたら、Filter.aspxを実行してみよう。冒頭の画面のように、まずは選択ボックスだけが表示されていることを、また、選択ボックスで適当な出版社名を設定すると、グリッド表に対応するデータが表示されることを確認してほしい。End of Article

利用可能バージョン:.NET Framework 2.0
利用可能バージョン:.NET Framework 3.0
利用可能バージョン:.NET Framework 3.5
カテゴリ:Webフォーム 処理対象:GridViewコントロール
使用ライブラリ:GridViewコントロール
関連TIPS:[ASP.NET]GridViewコントロールでデータソースの内容を表示するには?

この記事と関連性の高い別の.NET TIPS
[ASP.NET]GridViewコントロールで選択ボックスを表示するには?
[ASP.NET]GridViewコントロールを階層表示させるには?
[ASP.NET AJAX]CascadingDropDownコントロールで階層式選択ボックスを生成するには?
[ASP.NET]GridViewコントロールでデータソースの内容を表示するには?
[ASP.NET]GridView+DetailsViewコントロールで一覧/明細画面を作成するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


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 記事ランキング

本日 月間