- - PR -
DataGridでの編集(WindowsForm編)
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-10-31 14:52
いつも、お世話になっております。
DataGridについてですが、過去にもいろいろなスレッドで 話題になっているようですが、WEBでのDataGridの話題が 多いようです。 WindowsFormでDataGridを使う場合ですが、 データを連結して表示するところまではほとんどの書籍に 載っているのですが、さて細かい編集部分になるととたんに 参考資料がないような気がします。 以下の点で作法と言うかセオリーがわかりません。 なにやら機能豊富なコントロールの様ですが、 みなさま使いやすく感じておられますでしょうか? ・入力データの検査 SetColumnErrorを使用する方法が解説されていますが、 MaxLengthを超えた時に自動で出力されるメッセージボックス でのUIの実現方法はないのでしょうか? 既存のレコードにはCancelEdit()が使えるのですが、 追加されたレコードではエラーになってしまうようです。 また、SetColumnErrorでのエラーマークを消す方法も不明です。 ・Deleteキーでレコード削除時の確認 Deleteキーでレコード削除時に確認ダイアログを表示して 「No」の場合に削除をキャンセルする事はできるのですが、 これがDataGridに反映されません。 DeletedイベントをフックしてRejectChanges()で削除を取り消す まではいいのですが、この変更をDataGridに知らせる方法が 見当たらないのです。 このあたりの資料等ありませんでしょうか? ヘルプを探しまくったのですが、どれも核心に 辿り着けませんでした。 よろしくお願いいたします。 |
|
投稿日時: 2002-11-02 09:42
確かにDataGridに関する情報は多くないような気がしますね....
DataGridは私も今作成中のアプリで使用していますが、だんだん判ってくると結 構便利なコントールだと思っています。 入力データの検査について SetColumnError や EditCancel などのメソッドを使っておられるので、既にご存 じかもしれませんが、DataGrid への入力値を検査するには DataTable の ColumnChanging または ColumnChanged イベントが使えます。 使い方はヘルプの以下のアドレスにあります。 (注)MSDN 4月号のアドレスですのでご自分の環境で読み替えてください。 ms-help://MS.VSCC/MS.MSDNQTR.2002APR.1041/vbcon/html/vbtskHandlingErrorsWithWindowsFormsDataGridControl.htm ColumnChanging または ColumnChanged 内ではStartEditやEndEdit(恐らく CancelEditも)使えませんので検査によってフィールド値を変更する場合は RowChanging または RowChenged イベントも併用する必要があるかも知れません。 Deleteキーでレコード削除時の確認について 私の環境では ReadOnly にしていない限り、選択された行(又は複数行)はDelete キーを押下した時点で一旦画面から削除されます。 私の場合、確認は DataGrid の KeyUp イベントをフックして Deleteキーなら「削 除を完了」するかどうか確認メッセージをだして、確定なら DataTableの AcceptChanges() で、NO なら RejectChanges() で戻します。 ここで RejectChanges() を行うと画面上一旦削除されていた対象行が再表示されます。 RowDeletedイベントは複数行削除しても1行毎に発生するので削除が発生した判断材 料としています、もっと良いやり方があるかも知れませんが・・・・ |
|
投稿日時: 2002-11-05 10:49
Hirashigeさん、こんにちは。
書き込みありがとうございます。 KeyUpイベントですかぁ! 気が付きませんでした。 最初に自分は「Row_Deleting」イベントを使っていました。 説明には、「行が削除される前に発生する」との事でしたので、 ここでRejectChanges()メソッドを起動していました。 これが、うまくいかないんですよねぇ〜 ところが、ご指摘の通り「KeyUp」を使用したらうまくいくじゃ ないですか!(^^) ありがとうございました。 でも、またDataGridで問題が・・・ スレッドを変えて書き込ませていただきます。 |
1