C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■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

返信 編集キー/


管理者用

- Child Tree -