WindowsフォームのDataGrid、Dataviewについて


ハム太郎  2004-01-13 23:34:26  No: 111254

はじめまして。
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のみを使用して、追加作成段階で他のレコードは書き換わらない
ようにするにはどうしたらよいでしょうか。


岡田 之仁  2004-01-24 09:27:28  No: 111255

これはかなりの高等技術を要します・・・

DataGrid中に、コマンドボタンやコンボボックス等を表示させ
連携させる手段があり、それらが公開されていますが・・・
要はその方法を用いて、セルがフォーカスを持った場合、その
行データが新規追加されたかどうかと言う何か(フラグとか)
を目印にして、ラベルで表示させるか、テキストボックスで表
示させる・・・もしくは、テキストボックスでもReadOnlyにす
るか・・・と切り替えてやればOKかと・・・

更新処理の際には、フラグがONのものをデータベースに更新
するように、DataSetに渡すOleDbCommandへのSQL文を手動
で設定して、更新処理OleDbAdapter.Update(DataSet)とか・・・
してやれば欲しい機能が得られると思います。

実際にコードとなれば、かなりのコードをかかないと実現は
不可能なので、掲示板への投稿は無理かと思います。

ご検討下さい。

以上。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加