トップ回答者
テーブルを他のデータセットにコピーし、それをバインド元のデータソースに使いたい

質問
-
いつもお世話になっております。
先日、「あるデータセットのテーブルを他のデータセットにコピーし、それをバインド元のデータソースに使いたい」旨の質問をしました。
http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/5977ddda-e35d-4de3-b8bf-5bf7e3648f52
いったん解決出来たと思ったのですがこちらの勘違いで、残念ながら未だ解決出来ておりません。
いったん登録出来たと勘違いした理由は、ある条件の時だけ
データセットのUpdate()を使わず自前のインサート文で登録していたからでした。
行いたいのは、元データを使ってデータセットにコピーし、
バインド元のデータソースに使い新規追加することです。
※元データの更新ではないです。現状、更新になってしまいます。
登録前のデータテーブルをデバッグしてみました。
rowカウントは1です。1件のデータをまるまるコピーしたいのでこれはOK。
rowのStateは、Modifiedになっていました。コピーしただけなのに何故??
現状、ModifiedのためUpdate()すると当然元データが上書き更新されてしまいます。
Fillして来たデータをまったく編集してないのになぜModified状態になるのでしょうか?
ソースはこちらの回答のimportRowの方法です。
http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/5977ddda-e35d-4de3-b8bf-5bf7e3648f52
回答
-
こちらで試してみましたが、コピー先のDataRowのRowStateはUnChangedでした。コピー元のDataRowのRowSateもUnChangedであり、これはImportRowはインポート元のRowStateを引き継ぐ仕様と合致します。
sumi_tanaさんのところではModifiedになるとのことですが、何か他のロジックが動いているということはないでしょうか? もしくは、以前にも書きましたが、コピー元のDataRowが既にModifiedということはないでしょうか?新規追加されたいのであれば、以下のようにすればAddedになりますが、根本的な原因がわからないと気持ち悪いですよね・・・
dsコピー先.TEST.Rows[0].SetAdded();
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク sumi_sumi 2011年6月21日 2:35
すべての返信
-
こちらで試してみましたが、コピー先のDataRowのRowStateはUnChangedでした。コピー元のDataRowのRowSateもUnChangedであり、これはImportRowはインポート元のRowStateを引き継ぐ仕様と合致します。
sumi_tanaさんのところではModifiedになるとのことですが、何か他のロジックが動いているということはないでしょうか? もしくは、以前にも書きましたが、コピー元のDataRowが既にModifiedということはないでしょうか?新規追加されたいのであれば、以下のようにすればAddedになりますが、根本的な原因がわからないと気持ち悪いですよね・・・
dsコピー先.TEST.Rows[0].SetAdded();
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク sumi_sumi 2011年6月21日 2:35