- PR -

DataGridのページ処理中にDBのデータが減ったら...

1
投稿者投稿内容
やまも
会議室デビュー日: 2001/09/16
投稿数: 4
投稿日時: 2005-01-31 18:30
こんにちは

ASP.NETでWebアプリを作っているのですが、ちょっと知恵をお借りしたく。

[説明]
ページ処理を有効にしたDataGridでDB上にある100レコードのデータを
10行ずつ表示したとします。 当然、10ページできます。
そこで9ページ目を表示した状態で、DBから20レコード削除されたとします。
次に10ページ目に遷移しようとすると
「CurrentIndexはPageCountより小さくしろ」
と怒られます。

エラーの内容は確かにその通りなのですが、使い勝手はよくないですよね...

これを回避する良い方法は無いものでしょうか?

やっぱり「CurrentIndex = 0」で一度 DataBind() して PageCount を取得し、
e.NewPageIndex がオーバーしてないかどうか自分で調べるしかないのでしょうか。
そうするとDataBind()が2回走るわけですが...そういうものですかねぇ
未記入
常連さん
会議室デビュー日: 2004/11/30
投稿数: 21
投稿日時: 2005-01-31 18:52
引用:

やまもさんの書き込み (2005-01-31 18:30) より:
「CurrentIndexはPageCountより小さくしろ」
と怒られます。


このエラーをキャッチした場合、
{MaxPageCountに相当するページ|先頭ページ|表示前の検索ページ}
を強制的に表示する。

などの仕様は如何でしょうか。

[ メッセージ編集済み 編集者: 未記入 編集日時 2005-01-31 18:54 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-01-31 22:02
引用:

やまもさんの書き込み (2005-01-31 18:30) より:

そうするとDataBind()が2回走るわけですが...そういうものですかねぇ


 まず、DataBindが2回呼ばれることが、なぜいけいないのでしょう?そこからじゃないですか?

 バインドしなくても、何件あって、1ページに何件表示するかわかっているなら、最大何ページあるか、計算で出せますよね?
_________________
やまも
会議室デビュー日: 2001/09/16
投稿数: 4
投稿日時: 2005-02-01 11:47
引用:

Jittaさんの書き込み (2005-01-31 22:02) より:
 バインドしなくても、何件あって、1ページに何件表示するかわかっているなら、最大何ページあるか、計算で出せますよね?


確かに! (^^;
DataGridを継承して、ページがオーバーしていたら先頭ページか
正しい最終ページを表示してくれるコントロールを作ってみます。

おバカな疑問に回答ありがとうございました。 m(_ _)m
1

スキルアップ/キャリアアップ(JOB@IT)