Несоответствие индекса строки XtraGrid после удаления строки - PullRequest
2 голосов
/ 22 сентября 2011

Я сейчас использую 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, то тест пройдет. Но я бы предпочел не делать этого.

Что мне нужно сделать, чтобы индексы строк снова начали сопоставляться?

1 Ответ

0 голосов
/ 22 сентября 2011

Вы должны удалить его из источника данных (dtWorkItems), а затем обновить сетку, если это не происходит автоматически. Сетка - это просто представление dtWorkItems. Может быть, вы уже делаете это, поскольку Acceptchanges работает, почему вы не хотите принять изменения, которые вы сделали?

...