我目前正在使用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(),则测试将通过。但我宁愿不这样做。
我需要做些什么来使行索引再次开始匹配吗?
最佳答案
您应该将其从数据源(dtWorkItems)中删除,然后重新整理网格(如果不是自动的话)。网格只是dtWorkItems的视图。也许在Acceptchanges起作用时您已经这样做了,为什么不希望接受所做的更改?
关于c# - 删除行后XtraGrid行索引不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7507833/