Я сейчас использую 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 находится в состоянии "Удалено".
Если я выполню AcceptChanges () для dtWorkItems, то тест пройдет. Но я бы предпочел не делать этого.
Что мне нужно сделать, чтобы индексы строк снова начали сопоставляться?