【问题标题】:XtraGrid row index mismatch after deleteing a row删除行后 XtraGrid 行索引不匹配
【发布时间】:2011-11-22 09:32:36
【问题描述】:

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

我需要做些什么来让行索引重新开始匹配吗?

【问题讨论】:

    标签: c# devexpress xtragrid


    【解决方案1】:

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

    【讨论】:

    • 我不想AcceptChanges(),因为我想稍后调用GetChanges()。
    • 调用 gridViewWorkItemList.RefreshData() 不会使行索引重新同步。
    猜你喜欢
    • 2013-06-22
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    相关资源
    最近更新 更多