ホーム > VB.NET, コンピュータ > VB.NET Tips FlexGrid.NETにBindしたDataTableの任意行にDataRowを追加

VB.NET Tips FlexGrid.NETにBindしたDataTableの任意行にDataRowを追加

2009 年 5 月 1 日

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

VB.NET, コンピュータ , , , , , , , ,

  1. コメントはまだありません。
  1. トラックバックはまだありません。