C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: DataGridViewの更新行について


(過去ログ 52 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■28616 / inTopicNo.1)  DataGridViewの更新行について
  
□投稿者/ む (6回)-(2008/11/28(Fri) 10:41:21)

分類:[VB.NET/VB2005 以降] 

お世話になります。
VB2005/SQLServer2005にて開発を行っています。

現在DBから取得したデータを格納したDataTableをDataGridViewに連結し、
データの更新を行おうとしています。
更新の方法は、Gridの行内に直接入力、新規行に直接追記しています。
更新や追加の行を、GetChanges(DataRowState.Modified/Added)で取得しようとしていますが、
1行でも追加や更新を行うと、全ての行がModifiedとして取得されてしまっています。

下記ソースです。

        Dim dtInfo As DataTable = DirectCast(Me.grdInfo.DataSource, DataTable)  '' GridのDataSource
        Dim DtAdd As DataTable '' 追加行用
        Dim DtUpdata As DataTable '' 更新行用

        DtAdd = dtInfo.GetChanges(DataRowState.Added)
        DtUpdata = dtInfo.GetChanges(DataRowState.Modified)

    '' 中略・・・DB更新処理

    Call Me.SetGridData() '' DBからデータを取得してGridのDataSourceを再設定


例えば元のデータが10行あるとして、1行追加した場合、
DtAddには1件、DtUpdataには元の全ての10件が入ってしまいます。
または、1件だけ編集した場合でも、10件全てがDtUpdataに入ってしまいます。

以上、ご存知の方が居られましたら、
ご教示の程よろしくおねがいいたします。

引用返信 編集キー/
■28626 / inTopicNo.2)  Re[1]: DataGridViewの更新行について
□投稿者/ ロック (139回)-(2008/11/28(Fri) 11:39:02)
直接的な回答じゃないですが

追加や更新を行ったタイミングで、全行に対して何らかの処理が
入っているような気がします。
もしくは、DataTableの全行に対して最初に何らかのデータ変更を行った後に
AcceptChanges()でフラグを初期化していないとか。。。

とりあえず、変更していないのにGetChanges(DataRowState.Modified)で取得
されてしまう行に対して列データの新データと旧データを比較してみてはいかがでしょうか?
実は何処かが変わっているかもしれません。
変わっていれば、原因も発見しやすいかなと思います。
変わっていない場合は謎ですね。。。

VB.NETは詳しくないけど、こんな感じかな?
Row("列名") <> Row("列名", DataRowVersion.Original)


引用返信 編集キー/
■28633 / inTopicNo.3)  Re[2]: DataGridViewの更新行について
□投稿者/ やじゅ (804回)-(2008/11/28(Fri) 12:57:10)
やじゅ さんの Web サイト
> 追加や更新を行ったタイミングで、全行に対して何らかの処理が
> 入っているような気がします。

同意見ですね、イベント系をコメントアウトするなりして、原因を探りましょう。
DataGridViewのModified
http://vsug.jp/tabid/63/forumid/72/postid/7529/view/topic/Default.aspx

引用返信 編集キー/
■28645 / inTopicNo.4)  Re[3]: DataGridViewの更新行について
□投稿者/ む (7回)-(2008/11/28(Fri) 13:58:44)
ロックさん、やじゅさん、お返事ありがとうございます。
助言頂きました通り各イベントでブレイクさせて、都度元のデータと比較してみました。

結果、上記ロジックに入る前に入力チェックを行っていたのですが、
その中でどうやら更新されているようです。
私の調査が足りずご面倒をお掛け致しました。

ありがとうございましたm(__)m
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -