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

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

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

Re[1]: グリッドビューのページング時に前ページの情報を保持する方法


(過去ログ 118 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■69171 / inTopicNo.1)  グリッドビューのページング時に前ページの情報を保持する方法
  
□投稿者/ ノンフロン (1回)-(2013/12/08(Sun) 02:22:06)

分類:[ASP.NET (VB)] 

開発環境:Visual Studio2010
言語:VB+ASP

ノンフロンと申します。

現在作成しているシステムで実装しようとしている機能があるのですが自分では実装方法が分からず行き詰まっており質問させて頂いています。

[やろうとしていること]
1.画面にGridViewとボタンを設置
2.DBからレコードを取得する。取得したベータはdatasetに格納。
3.取得した情報をGridViewに表示する。この時GridViewにはDBの内容と全く関係ないチェックボックスも用意する。
4.ページング機能を実装し、1ページに10レコード表示するようにする。
5.ボタンをおした時に、チェックボックスにチェックが入っているレコードをDBから削除

1〜4は実装が終わったのですが5の実装で行き詰っています。
1ページ目でチェックボックスにチェックを入れ、1ページ目以外を表示し、再び1ページ目を表示したときにチェックが外れてしまっています。なんとかチェックを状況を保持しておく方法は無いでしょうか。

皆さんの知恵をお貸しください。
よろしくお願いします。
引用返信 編集キー/
■69172 / inTopicNo.2)  Re[1]: グリッドビューのページング時に前ページの情報を保持する方法
□投稿者/ επιστημη (93回)-(2013/12/08(Sun) 10:56:02)
> 1ページ目でチェックボックスにチェックを入れ、1ページ目以外を表示し、再び1ページ目を表示したときにチェックが外れてしまっています。なんとかチェックを状況を保持しておく方法は無いでしょうか。

VBもDatabaseもシロートなのであてずっぽですが、
削除チェックのついたレコード(のprimary-key)の「集合」を用意して、

- レコード表示時、集合にあればチェックを打つ
- チェックボックスがON/OFFされたら集合を更新する
- ボタン押したとき、集合の要素をDBから削除

..とかやりますきっと。

引用返信 編集キー/
■69173 / inTopicNo.3)  Re[1]: グリッドビューのページング時に前ページの情報を保持する方法
□投稿者/ WebSurfer (105回)-(2013/12/08(Sun) 11:01:01)
No69171 (ノンフロン さん) に返信
> 開発環境:Visual Studio2010
> 言語:VB+ASP
>
> ノンフロンと申します。
>
> 現在作成しているシステムで実装しようとしている機能があるのですが自分では実装方法が分からず行き詰まっており質問させて頂いています。
>
> [やろうとしていること]
> 1.画面にGridViewとボタンを設置
> 2.DBからレコードを取得する。取得したベータはdatasetに格納。
> 3.取得した情報をGridViewに表示する。この時GridViewにはDBの内容と全く関係ないチェックボックスも用意する。
> 4.ページング機能を実装し、1ページに10レコード表示するようにする。
> 5.ボタンをおした時に、チェックボックスにチェックが入っているレコードをDBから削除
>
> 1〜4は実装が終わったのですが5の実装で行き詰っています。
> 1ページ目でチェックボックスにチェックを入れ、1ページ目以外を表示し、再び1ページ目を表示したときにチェックが外れてしまっています。なんとかチェックを状況を保持しておく方法は無いでしょうか。

詳しい実装まで考えてたわけではないですが、基本的にはチェック
したレコードの主キーを ViewState 等に保持しておいて、GridView
上の当該レコードの行の CheckBox にチェックを入れなおすという
方法を取るほかないと思います。


#今回の問題とはあまり関係ないですが、ご自分の環境はもう少し
#詳細に書きましょう(OS, .NET, IIS のバージョン、使用してい
#ブラウザは何かなど)

#クラッシック ASP ではなく ASP.NET だと理解していますが、その
#あたりも正確に書きましょう。その他、gridview ⇒ GridView、
#チェックボックス ⇒ CheckBox なども。
引用返信 編集キー/
■69174 / inTopicNo.4)  Re[1]: グリッドビューのページング時に前ページの情報を保持する方法
□投稿者/ オショウ (108回)-(2013/12/08(Sun) 11:03:38)
> 1〜4は実装が終わったのですが5の実装で行き詰っています。
> 1ページ目でチェックボックスにチェックを入れ、1ページ目以外を表示し、再び1ページ目を表示したときにチェックが外れてしまっています。なんとかチェックを状況を保持しておく方法は無いでしょうか。

  大量なデータがある場合、確かにページングは行いますネ!
  で、表中に削除用の列を別途追加すると、επιστημηさんが申されている通り
  ページが変わると忘れてしまうので、ローカル変数(配列等)に記憶させないといけ
  なくなります。

  ただ、これって結構面倒なので・・・
  DB的には、削除フラグ用の項目を1個追加して、表中のチェックボックスのON/OFF
  を、レコードの削除フラグに更新させます。

  削除ボタンを押した時点で、削除フラグがONのものを一括削除
  削除ボタンを押さないで(キャンセルの場合)終了する場合は、削除フラグを全OFF
  と言うSQL文を実行するだけ。

  如何でしょうか?

以上。参考まで
引用返信 編集キー/
■69175 / inTopicNo.5)  Re[1]: グリッドビューのページング時に前ページの情報を保持する方法
□投稿者/ しま (52回)-(2013/12/08(Sun) 11:56:51)
No69171 (ノンフロン さん) に返信
> [やろうとしていること]
> 1.画面にGridViewとボタンを設置
> 2.DBからレコードを取得する。取得したベータはdatasetに格納。
> 3.取得した情報をGridViewに表示する。この時GridViewにはDBの内容と全く関係ないチェックボックスも用意する。
> 4.ページング機能を実装し、1ページに10レコード表示するようにする。
> 5.ボタンをおした時に、チェックボックスにチェックが入っているレコードをDBから削除
>
> 1〜4は実装が終わったのですが5の実装で行き詰っています。
> 1ページ目でチェックボックスにチェックを入れ、1ページ目以外を表示し、再び1ページ目を表示したときにチェックが外れてしまっています。なんとかチェックを状況を保持しておく方法は無いでしょうか。
>
> 皆さんの知恵をお貸しください。
> よろしくお願いします。

私ならクライアント側のブラウザーで操作可能なデーターにチェック情報を保持します。
削除ボタンを押した時に、サーバー側にチェック情報を送信することでサーバー側で削除することにします。
このためには、ページの移動で、画面の遷移は起こしたくないので、AJAX のような方法でクライアント側の画面更新を
行います。

Webアプリケーション(ASP .Net)だとすると、複数ユーザーがこの操作をすることは考慮しなくていいのでしょうか?
ユーザーAがこの画面の操作をしている間に別のユーザーBがこの場面の操作を開始すると、AとBとの別の二人のユーザー間で
データー操作の競合が起こりませんか?

複数ユーザーが削除対象を選ぶ操作を許すとした時に削除実行の結果はどうあって欲しいのでしょうか?
引用返信 編集キー/
■69176 / inTopicNo.6)  Re[2]: グリッドビューのページング時に前ページの情報を保持する方法
□投稿者/ WebSurfer (106回)-(2013/12/08(Sun) 15:22:21)
No69171 (ノンフロン さん) に返信
> 詳しい実装まで考えてたわけではないですが、基本的にはチェック
> したレコードの主キーを ViewState 等に保持しておいて、GridView
> 上の当該レコードの行の CheckBox にチェックを入れなおすという
> 方法を取るほかないと思います。
>

上記案の具体例ですが、以下のページの応用で実現できると思います。

CheckBox 付き Calendar コントロール
http://surferonwww.info/BlogEngine/post/2010/11/14/Calendar-control-with-CheckBox.aspx

上のページの例では、Calendar の各日付に配置した CheckBox を、ViewState に
保持したチェックした日付のリストのデータを使って、Calendar.DayRender イベ
ントのハンドラで書き換えています。

これから、Calendar を GridView に変える(CheckBox は ItemTemplate にあら
かじめ配置しておく)、ViewState に保持するのは GridView に表示するレコード
の主キーのリストにする、GridView.RowDataBound(サンプルの Calendar.DayRender
に代えて)で CheckBox を FindControl で探し、その行の主キーを GridView.DataKeys
プロパティで取得してスクリプトを設定するとともに CheckBox.Checked プロパティ
を書き換えるという感じです。

分かりにくいと思いますが、分からなければ質問してください。
引用返信 編集キー/
■69205 / inTopicNo.7)  Re[3]: グリッドビューのページング時に前ページの情報を保持する方法
□投稿者/ WebSurfer (107回)-(2013/12/09(Mon) 21:00:56)
No69176 (WebSurfer さん) に返信
> ■No69171 (ノンフロン さん) に返信
>>詳しい実装まで考えてたわけではないですが、基本的にはチェック
>>したレコードの主キーを ViewState 等に保持しておいて、GridView
>>上の当該レコードの行の CheckBox にチェックを入れなおすという
>>方法を取るほかないと思います。
>>
>
> 上記案の具体例ですが、以下のページの応用で実現できると思います。
>
> CheckBox 付き Calendar コントロール
> http://surferonwww.info/BlogEngine/post/2010/11/14/Calendar-control-with-CheckBox.aspx

紹介した方法では、CheckBox をクリックするたびポストバックされてしまいます
が、GirdView に主キーも表示するなら、少なくとも同一ページで CheckBox を
クリックしてもポストバックしなくて済む方法もあります。興味があれば聞いて
ください。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -