DataGridViewから変更されたデータを選び抜き出す
投稿者 るきお  (社会人)
投稿日時
2011/4/11 12:39:36
DataTableにはそれ自体に変更管理機能がありますので、それを利用されるのはどうでしょうか?
まずDataRowのRowStateプロパティを使うと、そのレコードが追加されたのか、削除されたのか、変更されたのか取得することができます。
Itemプロパティを使うと修正前の値を取得することも可能です。
これらの機能を使うと以下のようなプログラムが可能です。
(未検証なので誤字等あるかもしれません。)
![](https://www.umayadia.com/images/icon/VB2010.gif)
まずDataRowのRowStateプロパティを使うと、そのレコードが追加されたのか、削除されたのか、変更されたのか取得することができます。
Itemプロパティを使うと修正前の値を取得することも可能です。
これらの機能を使うと以下のようなプログラムが可能です。
(未検証なので誤字等あるかもしれません。)
![](https://www.umayadia.com/images/icon/VB.NET2002.gif)
![](https://www.umayadia.com/images/icon/VB.NET2003.gif)
![](https://www.umayadia.com/images/icon/VB2005.gif)
![](https://www.umayadia.com/images/icon/VB2008.gif)
![](https://www.umayadia.com/images/icon/VB2010.gif)
Dim Row As DataRow = Table.Rows(0)
If Row.RowState = DataRowState.Modified Then
MsgBox "1行目は変更されています。"
MsgBox "変更前の[名前]列の値:" & Row("名前", DataRowVersion.Original)
MsgBox "変更後の[名前]列の値:" & Row("名前")
End If
投稿者 shu  (社会人)
投稿日時
2011/4/11 13:42:58
> 見比べ変更点を探しそこをアップデートしようと考えているのですが。
DBへの更新ということですか?だとするとDataAdapterからの派生クラスは用意されていませんか?
Dataset.Tables("テーブル名")をDataGridViewにバインドすれば、
DataAdapter.Update(Dataset)で
DataTableへのDatarowの追加(追加した行)をInsert
DataTableのDatarowの変更(変更した行)をUpdate
Datarow.DeleteしたDatarow(削除した行)をDelete
として処理されると思います。
DBへの更新ということですか?だとするとDataAdapterからの派生クラスは用意されていませんか?
Dataset.Tables("テーブル名")をDataGridViewにバインドすれば、
DataAdapter.Update(Dataset)で
DataTableへのDatarowの追加(追加した行)をInsert
DataTableのDatarowの変更(変更した行)をUpdate
Datarow.DeleteしたDatarow(削除した行)をDelete
として処理されると思います。
データグリッドビューに値のデータソースに値をデータテーブルで登録します。
この時、型付を使えれば良いのですがプロパイダーがVS2010に未対応の為
型付データセットが作成できません。
単純なデータテーブル等であれば生成できる為、それらを利用し
データソースに登録します。
この時、データソースに登録したデータテーブルのコピーを検証用として
とって置き、データグリッドビューで変更が加えられた場合データソースとそのテーブルを
見比べ変更点を探しそこをアップデートしようと考えているのですが。
なんだかレガシーな気がします。もっと便利なクラスやフローがありそうだと思い
質問します。
よろしくお願いします。