删除行后XtraGrid行索引不匹配

时间:2011-09-21 23:13:01

标签: c# devexpress xtragrid

我目前正在使用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(),那么测试将通过。但我宁愿不这样做。

我是否需要做些什么来让行索引再次开始匹配?

1 个答案:

答案 0 :(得分:0)

您应该从数据源(dtWorkItems)中删除它,然后如果不自动刷新网格。网格只是dtWorkItems的视图。也许你已经这样做,因为Acceptchanges有效,为什么你不想接受你所做的更改?