2
我目前正在使用XtraGrid。 我已经将gridControl绑定到DataTable。当我从DataTable中删除一行时,XtraGrid显示更改。但是当我开始处理行索引时,我会遇到奇怪的行为。删除一行后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(),那么测试就会通过。但我宁愿不这样做。
有什么我必须做的,让行索引再次开始匹配?
我不想AcceptChanges(),因为我想稍后调用GetChanges()。 –
调用'gridViewWorkItemList.RefreshData()'不会使行索引恢复同步。 –