■87579 / inTopicNo.4) |
Re[2]: ASP.netのListViewについての疑問 |
□投稿者/ ねこ (2回)-(2018/06/08(Fri) 19:31:02)
|
■No87578 (WebSurfer さん) に返信
> ■No87576 (ねこ さん) に返信
WebSurfer様
ご返信ありがとうございます。
まずは、開発環境です。
OS Windows7
.NET 4.0
IIS 10.0 Express
テンプレート 使っていません
投稿後に冷静になるとこんな仕様ではないはず、、、と思いまして、それでどちらかというと同じような症状の方がいないかな、位の気持ちになっています。
わけのわからない投稿にこんなにご丁寧にご回答いただきましてありがとうございます。
>
> いろいろ不明ですが、できる方法を紹介しておきます。
>
> ASP.NET 3.5 の ListView や DapaPager にはいろいろ不具合があるのですが、.NET 4.5.2
> 以降を使っているなら以下に紹介する方法で問題ないでしょう。多分
4.0だと微妙ですかね。
> もし、UpdatePanel を使っているなら非同期ポストバックのトリガとなるコントロールの
> ClientIDMode プロパティはデフォルトではなく AutoID にしておくことをお勧めします。
UpdatePanelは使用していません。
> #だから開発環境を書いてくれと言っているわけで、意味もなく聞いているわけではない
> のですよ。
開発環境というとVisual Studioのことかと思い、.NET Frameworkのことを失念しておりました。
>>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
WebSurfer様のページはいつも見させていただいております。
今回もこちらのページを見させていただいたのですが、ALLという選択肢を相手(と言っても社内)が望まず断念しておりました。
> デザイナでページングを有効にすれば DataPager が自動的に配置されてページングは可能にな
> り「疑問2.」も解決できると思います。
デザイナでページングを有効にしたのですがページをクリックしても表示が変わらずネットで色々調べて(その後そのサイトが見つからずリンクを貼れないのですが)PagePropertiesChangedイベントでSelectCommandを再設定すればいいとあり設定しました。
一応動いているのですが疑問に思いまして。
> ただし、 DataPager を配置してページングを行う場合、例えば、全件抽出してから別のページ
> に移動したあと、そのページで条件抽出を行った場合、何ページかという情報は保持されていて、
> 「そのページ」を表示しようとします。
>
> 条件抽出でレコード数が減ると当然全ページ数は減りますが、「そのページ」にはレコードがない
> 場合 DataPager を含めて何も表示されないという結果になります。
>
> なので、DropDownList の選択が変更されたら最初のページを表示するようなコートを追加する必
> 要があります。
>
> デザイナを使った場合、DataPager フィールドにデフォルトで NextPreviousPagerField が設定
> されると思いますが、それではページ指定の制御ができないのでNumericPagerField を実装し、
> その HandleEvent メソッドを利用します。
>
> 具体例は以下の記事を見てください。
>
> ListView でページ指定
> http://surferonwww.info/BlogEngine/post/2010/11/13/Show-specified-page-of-ListView-programmatically.aspx
この件は、検索ボタンを押した時の処理に以下のコードを書いて対応しています。
DataPager dp = (DataPager)ListView1.FindControl("DataPager1");
dp.SetPageProperties(0, 20, false);
同じような症状の方がいらっしゃるかこの土日待ってみてから解決済みにします。
|
|