現在、XtraGrid を使用しています。gridControl を DataTable にバインドしました。DataTable から行を削除すると、XtraGrid に変更が表示されます。しかし、行インデックスの処理を開始すると、奇妙な動作が発生します。
これは(大まかに)行を削除するために使用するコードです。
DataTable dtWorkItems;
...
gridWorkItemList.DataSource = dtWorkItems;
...
int currRowHandle = gridViewWorkItemList.FocusedRowHandle;
int currRowIndex = gridViewWorkItemList.GetDataSourceRowIndex(currRowHandle);
DataRow theRow = gridViewWorkItemList.GetDataRow(currRowHandle);
theRow.Delete();
しかし、このテストはその後失敗します。
int rowHandle = gridViewWorkItemList.FocusedRowHandle;
int rowIndex = gridViewWorkItemList.GetDataSourceRowIndex(rowHandle);
DataRow dr1 = gridViewWorkItemList.GetDataRow(rowHandle);
DataRow dr2 = dtWorkItems.Rows[rowIndex];
if (dr1 != dr2)
; // Failure
実際、dr2 の状態は「削除済み」です。
dtWorkItems で AcceptChanges() を実行すると、テストに合格します。しかし、私はむしろそれをしたくありません。
行インデックスを再び一致させるために何かしなければならないことはありますか?