- - PR -
DataGridで、フィルタ有効時にデータ変更を行うと'System.IndexOutOfRangeException' が発生
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-11 06:32
なんか、サンプルいうてもひどいなぁ、参照先のコード。ほんまにDAさんが書いた記事?
http://www.atmarkit.co.jp/fdotnet/dotnettips/099dgchgcell/dgchgcell.html 「100以上の値は設定させない」とかコメントに書いてあるけど、コードは1000個以上やし。 Form_Load で、データを初期化したらあかんやろ。まぁ、サンプルやで、不要な説明は端折って、コードは短くすませたいもんな。 Exception クラスをスローしたらあかんやろ。せめて ApplicationException にして欲しいなぁ。あ、tokeiさんは、ApplicationException クラスを継承したクラスを自作してや。 まぁ、あれや。サンプルはあくまでも“見本”やから、そのまま使うたらあかんっちゅうこっちゃ。これは、MSDN のサンプルもそうやから、気ぃ付けや。 それから、tokeiさんのコード。 データの変更が確定してないのに this.dataTable1.AcceptChanges(); はあかんやろ。 丸投げやないいうんやったら、ColumnChanging は
でええね。かつ、参照元と同じところなんか端折ってしもうたらええし。 それからカラムの比較順序やけど、ID、個数、商品名の順やけど、ここって変えてええのは「個数」だけちゃうんかなぁ?あれれ?「ID」変えた時になってへん?個数だけしか変えたらあかんねんから、ID と商品名は、ReadOnly にできひんかったかなぁ?DataGridColumn.ReadOnly っていうプロパティあるよね。こういうところで“丸投げ”って評価されるわけやね。
うん、だから、リファレンス見ようよ。DataGrid クラスに SelectedIndex とか SelectedItem とか、それらしい名前のプロパティがあるよね。
うん、そんなもん、見比べてみたらわかるよね。 呼び出し履歴を、どこの時点でとったんかわからんけど、スタックトレースは“例外が発生したところの”呼び出し履歴が入っとう。せやから、呼び出し履歴を表示したところが例外発生箇所やなかったら、当然違うよね。 _________________ | ||||||||||||
|
投稿日時: 2007-04-21 15:18
この問題は解決しました。
下記HPを参照下さい。 http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1480947&SiteID=7 | ||||||||||||
|
投稿日時: 2007-04-21 15:25
To:Jitta様
返事が遅くなり申し訳ございません。 気が付きませんでした。 (ページが2ページになっていることに初めて気が付きました。) > まぁ、あれや。サンプルはあくまでも“見本”やから、そのまま使うたらあかんっ >ちゅうこっちゃ。これは、MSDN のサンプルもそうやから、気ぃ付けや。 はい。注意します。 >うん、そんなもん、見比べてみたらわかるよね。 > 呼び出し履歴を、どこの時点でとったんかわからんけど、スタックトレースは“例外 >が発生したところの”呼び出し履歴が入っとう。せやから、呼び出し履歴を表示したと >ころが例外発生箇所やなかったら、当然違うよね。 理解できました。ありがとうございます。 [ メッセージ編集済み 編集者: tokei 編集日時 2007-04-21 15:27 ] | ||||||||||||
|
投稿日時: 2007-04-22 21:07
それでいいの? そうすると、変更したデータを取り出して、データベースへ渡せない、あるいは、渡すことが困難になるけど、本当にいいの? AcceptChanges をすることで、何がどうなるか、本当に理解してやっていますか?あなたがしなければならないことは、「エラーが出なくすること」ではなく、「バグを潰すこと」ですよ?「バグを潰すこと」は、「エラーが出なくなる」ことではないですよ? _________________ | ||||||||||||
|
投稿日時: 2007-04-23 17:59
To:Jitta様
Microsoftフォーラムの方に返信を書きました。 申し訳ございませんが、そちらをご参照願います。 http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1480947&SiteID=7 |