このテストコードは本当に簡単です
var addedRows1 = (securityDataTable.GetChanges(DataRowState.Added));
MessageBox.Show(addedRows1.Rows[1].RowState.ToString());
MessageBox.Show(addedRows1.Rows.Count.ToString());
addedRows1.Rows[1].AcceptChanges();
var addedRows2 = (securityDataTable.GetChanges(DataRowState.Added));
MessageBox.Show(addedRows2.Rows[1].RowState.ToString());
MessageBox.Show(addedRows2.Rows.Count.ToString());
4 つMessageBox
は、次のメッセージを順番に表示します。
Added
3
Added
3
最後のメッセージでカウントが 2 を返すことを期待します。なぜそうではないのですか、これは何らかの方法で修正できますか? 注: DataTable は、テーブルにも特定のデータ ソースにもリンクされていません。
編集: 2 回目に GetChanges() を再クエリしない場合、RowState は OK (Unchanged に設定) であることに注意してください。