| ■87578 / ) |
Re[1]: ASP.netのListViewについての疑問 |
□投稿者/ WebSurfer (1511回)-(2018/06/08(Fri) 12:40:46)
|
■No87576 (ねこ さん) に返信
いろいろ不明ですが、できる方法を紹介しておきます。
ASP.NET 3.5 の ListView や DapaPager にはいろいろ不具合があるのですが、.NET 4.5.2 以降を使っているなら以下に紹介する方法で問題ないでしょう。多分
もし、UpdatePanel を使っているなら非同期ポストバックのトリガとなるコントロールの ClientIDMode プロパティはデフォルトではなく AutoID にしておくことをお勧めします。
#だから開発環境を書いてくれと言っているわけで、意味もなく聞いているわけではない のですよ。
> SqlDataSourceのSelectCommandを切り替えるという仕組みです。
そういう方法ではなくて、WHERE 句は以下のように固定しておいて、
SELECT COL1, COL2, COL3 FROM TABLE1 WHERE @COL1 = 'ALL' OR COL1 = @COL1
DropDownList の SelectedValue プロパティの値をパラメータ @COL1 に代入して、全件抽出と 条件抽出の両方に対応できるようにするという方法ではいかがですか?
以下の記事は ListView ではなく GridView を使った場合ですが、GridView を ListView に置 き換えても同じことはでき、これで「疑問1.」は解決するはずです。
DropDownList を使って絞込み http://surferonwww.info/BlogEngine/post/2011/07/17/Showing-records-selected-by-DropDownLists-into-GridView.aspx
デザイナでページングを有効にすれば DataPager が自動的に配置されてページングは可能にな り「疑問2.」も解決できると思います。
ただし、 DataPager を配置してページングを行う場合、例えば、全件抽出してから別のページ に移動したあと、そのページで条件抽出を行った場合、何ページかという情報は保持されていて、 「そのページ」を表示しようとします。
条件抽出でレコード数が減ると当然全ページ数は減りますが、「そのページ」にはレコードがない 場合 DataPager を含めて何も表示されないという結果になります。
なので、DropDownList の選択が変更されたら最初のページを表示するようなコートを追加する必 要があります。
デザイナを使った場合、DataPager フィールドにデフォルトで NextPreviousPagerField が設定 されると思いますが、それではページ指定の制御ができないのでNumericPagerField を実装し、 その HandleEvent メソッドを利用します。
具体例は以下の記事を見てください。
ListView でページ指定 http://surferonwww.info/BlogEngine/post/2010/11/13/Show-specified-page-of-ListView-programmatically.aspx
|
|