2004年12月06日

DataTable.GetChanges()

   このエントリーをはてなブックマークに追加 Clip to Evernote
DataTable.GetChanges() って、テーブルに対して行われた変更部分だけを取得できるのですが、これではまりました。

 foreach ( DataRow dr in dataTable.GetChanges().Rows ) {
   dr.RowError = "error";
 }

とやっても、RowError プロパティに文字列を設定すると、DataGridの表示が変るのはずなのですが、いくら頑張っても、表示が変りません。
デバッグでdataTableの中をブラウズしていったら、RowError プロパティが変更されていないじゃないですか???
間違いなく上のコードは実行されているのに、どうして?と思いました。
調べたら、DataTable.GetChanges()メソッドって、コピーを返すんですね。
DataTable.GetChanges()が返すテーブルの各row は、オリジナルのRowの参照を持っているのかと思っていたら、完全なるコピーが作成されるようで、GetChanges()で返される各row も複製なので、いくら、
dr.RowError = "error";
とやっても、オリジナルを変更できないのでした。
これを知らずに時間を無駄に費やしてしまいました。


この記事へのコメント
Hi! Thanks for a job. Nice site...
Better than some follow:
http://whereitisnow.com/home-business/page_1.html <a href=http://whereitisnow.com/home-business/page_1.html>articles home business</a> [url=http://whereitisnow.com/home-business/page_1.html]articles home business[/url]
http://magicresult.com/corp/page_1.html <a href=http://magicresult.com/corp/page_1.html>髓瑩 蓁鱚竦瑶</a> [url=http://magicresult.com/corp/page_1.html]髓瑩 蓁鱚竦瑶[/url]
http://magicresult.com/realty/page_1.html <a href=http://magicresult.com/realty/page_1.html>髓瑩 辣籵蒿蓐鉐鴾</a> [url=http://magicresult.com/realty/page_1.html]髓瑩 辣籵蒿蓐鉐鴾[/url]
http://savos.ru/mobail/ <a href=http://savos.ru/mobail/>mobail shop</a> [url=http://savos.ru/mobail/]mobail shop[/url]

Regards! And see You...
Posted by susan at 2007年03月03日 03:01
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/10304816
この記事へのトラックバック
同じく嵌りました・・・・。 コピーされているのに気づくのに凄く時間がかかりましたですw DataTable.GetChanges() (From 窓際プログラマーの独り言さん) http://blog.livedoor.jp/gushwell/archives/10304816.html
[C#][ADO.NET] DataTable.GetChangedの動き【いろいろ備忘録日記】at 2007年09月04日 16:11