はじめまして。
VB.NETのWindowsフォームで使用するDataGrid、DataViewについて教えてください。
DataGridでレコードの追加を行っているのですが、追加作成中以外の
レコードは編集できないようにするにはどうしたらよいでしょうか。
現在試している処理は、
DataGridの「ReadOnly」 を「False」、
Dataviewの「AllowDelete」を「False」、
「AllowEdit」 を「False」、
「AllowNew」 を「False」、
となっているところに
レコード追加用のボタンを押すと
Me.DataView1.AllowNew = True
としていますが、これでは追加されるのみで編集ができないので
Me.DataView1.AllowEdit = True
としていますが、これでは他のレコードも編集可能になってしまいます。
追加された現在のレコードのみ編集できるようにしたいです。
テーブルに書き戻す際に他に変更されていたレコードをチェックする方法や、
入力用の画面を用いてレコードを追加する方法もございますが、
DataGridのみを使用して、追加作成段階で他のレコードは書き換わらない
ようにするにはどうしたらよいでしょうか。
これはかなりの高等技術を要します・・・
DataGrid中に、コマンドボタンやコンボボックス等を表示させ
連携させる手段があり、それらが公開されていますが・・・
要はその方法を用いて、セルがフォーカスを持った場合、その
行データが新規追加されたかどうかと言う何か(フラグとか)
を目印にして、ラベルで表示させるか、テキストボックスで表
示させる・・・もしくは、テキストボックスでもReadOnlyにす
るか・・・と切り替えてやればOKかと・・・
更新処理の際には、フラグがONのものをデータベースに更新
するように、DataSetに渡すOleDbCommandへのSQL文を手動
で設定して、更新処理OleDbAdapter.Update(DataSet)とか・・・
してやれば欲しい機能が得られると思います。
実際にコードとなれば、かなりのコードをかかないと実現は
不可能なので、掲示板への投稿は無理かと思います。
ご検討下さい。
以上。
ツイート | ![]() |