DataGridViewから変更されたデータを選び抜き出す への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 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

として処理されると思います。
投稿者 るきお  (社会人) 投稿日時 2011/4/11 12:39:36
DataTableにはそれ自体に変更管理機能がありますので、それを利用されるのはどうでしょうか?

まずDataRowのRowStateプロパティを使うと、そのレコードが追加されたのか、削除されたのか、変更されたのか取得することができます。
Itemプロパティを使うと修正前の値を取得することも可能です。

これらの機能を使うと以下のようなプログラムが可能です。
(未検証なので誤字等あるかもしれません。)

    
Dim Row As DataRow = Table.Rows(0)

If Row.RowState = DataRowState.Modified Then
    MsgBox "1行目は変更されています。"
    MsgBox "変更前の[名前]列の値:" & Row("名前", DataRowVersion.Original)
    MsgBox "変更後の[名前]列の値:" & Row("名前")
End If
投稿者 tecc  (社会人) 投稿日時 2011/4/11 11:30:08


データグリッドビューに値のデータソースに値をデータテーブルで登録します。
この時、型付を使えれば良いのですがプロパイダーがVS2010に未対応の為
型付データセットが作成できません。

単純なデータテーブル等であれば生成できる為、それらを利用し
データソースに登録します。

この時、データソースに登録したデータテーブルのコピーを検証用として
とって置き、データグリッドビューで変更が加えられた場合データソースとそのテーブルを
見比べ変更点を探しそこをアップデートしようと考えているのですが。

なんだかレガシーな気がします。もっと便利なクラスやフローがありそうだと思い
質問します。

よろしくお願いします。