|
分類:[ASP.NET (VB)]
GridViewで、パラメータにコントロールの内容をWHERE条件に設定することができますが、
コントロールの内容によってWHERE条件を使わないということはできるのでしょうか。
以下のような「売上テーブル(URIAGE)」があり、GridViewを使用してテーブルの内容を表示するASPページを
作成しようとしています。
[TENPOCD],[NENGETU],[KINGAKU]
A01,201604,100
A01,201605,150
B12,201604,120
B12,201605,140
C33,201604,130
C33,201605,160
ASPページには
店舗選択のドロップダウンリスト(TENPODDL)
年月入力のテキストボックス(NENGETUTXT)を配置し、
店舗選択ドロップダウンは以下のListItemを設定して選択できるようにしています。
ListItem("すべて","*")
ListItem("店舗A","A01")
ListItem("店舗B","B12")
ListItem("店舗C","C33")
GridViewの「データソースの構成」から、以下のようなSQLを指定しています
SELECT * FROM URIAGE
WHERE TENPOCD = @TENPODDL
AND NENGETU = @NENGETUTXT
パラメータは、@TENPODDLを店舗ドロップダウンリスト、@NENGETUTXTを年月テキストをソースとしています。
実現したいこととしては、以下となります。
・店舗選択ドロップダウンで「すべて」が選択されている場合は、店舗コードに関わらずSELECTする
・年月テキストボックスが空の場合は、年月に関わらずSELECTする
現在は、コマンドボタンを用意して、ボタンクリックイベント内で
・ドロップダウンの内容とテキストボックスの内容をチェックして、その内容によってSELECT文を組み立てる
→ドロップダウンが「すべて」だったら、WHERE文はNENGETUだけにする。
年月が空だったらWHERE文はTENPOCDだけにする。
「すべて」かつ年月が空だったら、WHERE文無しにする。
・組み立てたSELECT文をGridViewのDataSourceにセットする
・GridView.DataBindする
ということで実現していますが、これだと、ASPページのソースにもボタンクリックイベントのソースにも
SQLが記述されることになるので、あまり望ましくない感じがします。
できればボタンクリックを使わずに実現したいのですが、よい方法がありましたら教えていただけると幸いです。
よろしくおねがいします。
|