2

現在、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() を実行すると、テストに合格します。しかし、私はむしろそれをしたくありません。

行インデックスを再び一致させるために何かしなければならないことはありますか?

4

1 に答える 1

0

データソース ( dtWorkItems ) から削除してから、自動的に更新されない場合はグリッドを更新する必要があります。グリッドは、dtWorkItems の単なるビューです。Acceptchanges が機能するので、すでにそれを行っているのかもしれませんが、行った変更を受け入れたくないのはなぜですか?

于 2011-09-21T23:33:57.777 に答える