- 題名: DataGridの削除処理
- 日時: 2004/12/03 18:41:58
- ID: 7835
- この記事の返信元:
- (なし)
- この記事への返信:
- [7839] Re[1]: DataGridの削除処理2004/12/04 1:33:41
- ツリーを表示
上記掲示板の回答では、対応できません。 「追加行」は質問の内容通り「戻ってきません」し、 更に他のデータもDataTableの前回確定段階のデータまで戻されてしまいます。 RowStateを有効活用して開発している方の場合、そこかしこで意味のないAcceptChangesを 実行してることはないでしょうから、呼出後最初の状態まで戻ることになります。 行削除は、RowDeletingで例外を発生させることで無理やり取り消すことはできますが、 DataGridのDeleteキー押下によりDeleteを呼び出された場合は 例外をハンドルしてフレームワークの例外メッセージを沈静化させる記述をする場所が ないわけで、うるさくて仕方ありません。 なので、選択してDeleteキー、の機能を使えないように行ヘッダを非表示にして、 自前で行削除を用意するのが得策かと。 (DataGridのキーイベント3種全てでDeleteキーを拾ってHandled=Trueにしても、 Deleteが呼び出されますので。) 例えば、 ボタン押したらカレント行を消すかどうか質問表示して、 「はい」ならカレント行のDeleteメソッドを呼び 「いいえ」ならDelete自体呼ばない ようにする、といった機能。 これでは、まとめて複数行選択して削除、とかできませんが、 それをしたければチェックボックスカラムか1文字のカラムを判定用に追加して、 チェックされている(ないし1が入っている)行を削除する、といった感じです。 おまけ情報: カレント行の取得方法のヒント 操作を繰り返したDataGridのインデックスと実際のDataTableとのインデックスはずれているので 行の特定にはCurrencyManagerを使うようにします。 これを使うと、(DataGrid等、バインドしているコントロールで)カレントになっているほんとの行を得られます。
分類:[.NET]
初歩的な事かもしれませんが教えてください。
グリッド上の行を選択してDeleteキーで削除ができるのはいいのですが
メッセージボックスで確認を行う場合には
どういうイベントで監視すればいいのでしょうか?
基本的にはRowDeletingとRowDeletedイベントは通るようなのですが
Deletedのほうは追加行の場合RejectChangesではもどってきませんし・・・
この場合の基本的な考え方をレスして頂ければ幸いです。