- PR -

ADO.NETのデータセットの更新について

1
投稿者投稿内容
ASP.NET初心者
会議室デビュー日: 2004/08/13
投稿数: 19
投稿日時: 2005-01-06 08:32
どなたか、ご存知のかた教えて下さい。
ASP.NETで開発を行っていますが、ADO.NETのデータセットの内のデータテーブルの行について、削除、更新、追加を行った後にDataGridコントロールにDataBindした場合にDataGridに削除、更新、追加は反映されるのでしょうか。 また、Findメソッドを実行した場合に削除、追加したデータは検索できるのでしょうか。変更したデータは変更後のデータが検索されるのでしょうか。
削除、更新、追加はいずれも、まだDBに反映前の状態で、RowStateがそれぞれ、Deleted、Changed、Addedの状態です。
私が、実際に試したところ、削除、変更、追加したデータ全て(変更したデータは変更後の状態)がDataGridに表示されて、Findメソッドでも検索できるようなのですが・・・
削除したデータはDataGridに表示されず通常のやり方ではFindメソッドでも検索できないと聞いたことがあるのですが・・・(こちらの動きのほうが自然だと思うのですが)どちらが正しいのでしょうか?
ノリック
会議室デビュー日: 2004/12/16
投稿数: 8
投稿日時: 2005-01-06 08:55
変更した後にDataRow.AcceptChanges メソッド を呼べばどうでしょうか?
ASP.NET初心者
会議室デビュー日: 2004/08/13
投稿数: 19
投稿日時: 2005-01-06 09:01
引用:

ノリックさんの書き込み (2005-01-06 08:55) より:
変更した後にDataRow.AcceptChanges メソッド を呼べばどうでしょうか?


DataRow.AcceptChanges メソッドを実行してしまうとRowStateがUnchangedになってしまい、UpdateメソッドによるDBへの実更新ができなくなってしまうのではないのでしょうか?
Os_
ベテラン
会議室デビュー日: 2003/04/16
投稿数: 77
投稿日時: 2005-01-06 09:36
DataTable内の行(DataRow)は、更新状態を管理する為、行バージョン(DataRowVersion)
を持っており、
これにより、更新前または更新後のデータにアクセスできる構造になっています。

示された状態から想像するに、DataRowVersionはDefaultの状態と思われますが、
これをCurrentにすることで、削除された行が除かれたデータにアクセスできます。

行バージョン(DataRowVersion)についての詳細は、下記の資料を参考にして下さい。
行の状態とバージョン
1

スキルアップ/キャリアアップ(JOB@IT)