DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridでの削除

環境/言語:[WindowsXP C# ]
分類:[.NET]

こんにちわ。

DataGridにて問題が発生したのでお分かりになられる方がおられましたら
ご教授願います。

DataSet内のテーブルをDataGridに表示し、特定の方法でレコードを全削除すると
エラーが発生すると言うものです。図を参照してください。

この方法以外の削除ではなんら問題なく作動するので特例な仕様なのかとも思います。
このような方法で削除することがなかったので今まで気づきませんでした。
一度新規行から他の行へ移動させると問題なく削除できるようなので
DataGridを継承しProcessCmdKeyをオーバーライド、KeyDownにてDELETEを検知後、
CurrencyManagerのPositionを強制的に移動させても削除されませんでした。

どなたか分かる方が折られましたらご回答の程よろしくお願い致します。
UPに制限があったため次の書き込みにてサンプルのsourceをUPしておきます。
(この記事にはファイル"gridtest.gif"が添付されていましたが、削除されました。)
サンプルソースです。
(この記事にはファイル"testcode.zip"が添付されていましたが、削除されました。)
■No4178に返信(mbさんの記事)

AddNewした新規レコードが、確定される前に削除されたため出たエラーと思われます。
独自に作成された ProcessCmdKeyメソッドか、グリッドのクリックイベント(他にもっと適切なイベントがありそうです)で、削除の前にレコードの編集終了処理
this.BindingContext[ds, "TEST"].EndCurrentEdit();
を入れてみるとどうでしょうか。
  • 題名: Re[3]: DataGridでの削除
  • 著者: mb
  • 日時: 2004/05/28 10:31:00
  • ID: 4201
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ご返答ありがとう御座います。

>AddNewした新規レコードが、確定される前に削除されたため出たエラーと思われます。
私もそれが原因だと思うのですがレコードがない場合に同じ手順にて追加して削除してもエラーにはならないようです。

最初の投稿で
>CurrencyManagerのPositionを強制的に移動させても削除されませんでした。
と書いたのですが再度組みなおしたら問題は発生しなくなりました。
(前のソースがデタラメだったかもしれません。申し訳ないです。)

Positionの強制移動で問題が発生しないので同じ地点にて
this.BindingContext[ds, "TEST"].EndCurrentEdit();
を行ってみましたが、問題は改善されませんでした。
CurrencyManagerのEndCurrentEdit()でも駄目でしたので
なぜCurrencyManagerのPositionを移動させると問題が発生しないのか調べてみます。

なにかお気づきになられたことが御座いましたら教えてくださいませ。
よろしくお願い致します。

DOBON.NET | プログラミング道 | プログラミング掲示板