- PR -

コピーしたDataTableのDataRowの変更内容を元Tableに反映

1
投稿者投稿内容
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-09-08 10:51
いつもお世話になります。

只今、WinアプリでDataGridを使用したアプリを作成しています。

 大量のデータをDataGridに表示する事に備えてDataGridにページング機能を追加しました。
データベースに反映するためのDataTable(A)と表示用DataTable(B)を用意し、DataTable(A)から表示件数分だけ行(DataRow)をコピーしてDataGridのデータソースにしています。

 この際、ページが切り替わるときやデータベースに反映するときに表示用DataTable(B)の内容をDataTable(A)に反映したいのですが、このときの効率のよい方法が分かりません。

 表示用DataTable(B)からDataTable(A)へ行と列を指定して行数分変更する以外に方法はないのでしょうか?お知恵を拝借出来ますよう、よろしくお願いします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-09-08 11:22
諸農です。

試していないのですが、DbDataAdapter.UpdateにDataTable(B)を
渡せばDBへの更新はうまくいくかもしれないですね。


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-09-08 11:40
Jubeiさん、ご返答ありがとうございます。

>DbDataAdapter.UpdateにDataTable(B)を渡せば・・・

やってみましたがコードを記述した時点で怒られました。

DbDataAdapter.Updateメソッドの第一引数はDataSetなのでDataSetを指定しないといけないような気がするのですが・・。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-09-08 12:50
諸農です。

引用:

DbDataAdapter.Updateメソッドの第一引数はDataSetなのでDataSetを指定しないといけないような気がするのですが・・。



あれれ?
ドキュメントを見る限りではDbDataAdapter.Update メソッドではDataTableやらDataRowの配列も渡せるようですけど。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-09-08 13:41
Jubeiさん、ご返答ありがとうございます。

>ドキュメントを見る限りではDbDataAdapter.Update メソッドではDataTableやらDataRowの配列も渡せるようですけど。

すいません。勉強不足でした、お恥ずかしい。

更新出来ました。ありがとうございます。

ただ、ページの遷移の事を考えるとDataTableをページ数分用意する等の工夫が必要になると思います。これからもう少し詰めていきたいと思います。


とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-09-08 19:27
引用:

とっとさんの書き込み (2004-09-08 10:51) より:

 この際、ページが切り替わるときやデータベースに反映するときに表示用DataTable(B)の内容をDataTable(A)に反映したいのですが、このときの効率のよい方法が分かりません。




うーん、やはり表示しているデータを編集してページを遷移する事を考えると元のDataTable(A)に変更を反映した方が良いのですかねー。『ページの遷移の事を考えるとDataTableをページ数分用意する』ってのも最初のDataTable(A)の意味がなくなりますよね。

また上手くできたら報告します。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-09-09 11:04
解決しました。

編集時にデータベースに反映するためのDataTable(A)の編集対象の行のインデックスを求めてからそのテーブルに対して編集を行い、表示用DataTable(B)にそれを反映して、データベースへの更新はDataTable(A)で行う事により解決しました。最後は内容がちょっとスレッドずれしましたけど・・・。

MSDNでWinアプリのDataGridのページング機能は読取専用でやってくださいって言ってるだけにちょっとややこしかったです。
1

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