VB.NET Tips FlexGrid.NETにBindしたDataTableの任意行にDataRowを追加
photo by Taschapascha
FlexGrid.NETにDataBindされたDataTable内の任意行にDataRow(新規行)を追加する際、
「同時実行違反:UpdateCommand によって、処理予定の1レコードのうち0件が処理されました。」
このエラーが出て、新規行を追加できませんでした。
同時実行違反エラーというのが、DataAdapterに設定したUpdateCommandのWHERE句に指定した値で行が参照できないときなどに出力されるエラーです。
このときのコードが下記のものです。
Dim row As DataRow dim InsertRow as Integer = 2 row = DataS.Tables("hoge").NewRow() ' hogeデータテーブルのInsertRowの位置にrowデータロウを挿入 DataS.Tables("cust").Rows.InsertAt(row, InsertRow) ' hogeデータテーブルに対して行われた変更をコミット DataS.Tables("cust").AcceptChanges()
FlexGrid.NETの任意の位置には、挿入されるのですがエラーが出てデータベースへはUpdateされませんでした。
ネット検索してみると、DataGridコントロールの例では、AcceptChangesを行わないと、最下行に追加されてしまうなどの情報をみつけたのですが、FlexGrid.NETとは動作が少し違うようです。
ですが試しに、AcceptChangesをはずしてみるとなんの問題もなく、正常に動きました。
Dim row As DataRow dim InsertRow as Integer = 2 row = DataS.Tables("hoge").NewRow() ' hogeデータテーブルのInsertRowの位置にrowデータロウを挿入 DataS.Tables("cust").Rows.InsertAt(row, InsertRow) ' hogeデータテーブルに対して行われた変更をコミットはすでにされてるのかな。
DataBindされたFlexGrid.NET側で、InsertAtが行われたときにAcceptChangesされているような感じです。
関連するエントリー
- None Found