更改其数据后,无法在slickgrid中选择第一行

时间:2013-02-19 17:42:51

标签: slickgrid

我有一个单一的slickgrid,它使用带有行选择模型的数据视图。我经常为数据视图分配一个完全不同的数组,切换此网格中的数据。

我使用此函数交换网格中的数据集:

function setData(dataArray, uniqueIdFieldName) {
    dataView.beginUpdate();
    dataView.setItems(dataArray, uniqueIdFieldName)
    dataView.endUpdate();
    grid.resizeCanvas();
    grid.invalidate();  
}

我第一次使用此功能(将初始数据加载到空网格中),一切都很好。每次之后,它都会加载数据,但有一个选择错误。我无法选择网格中的第一行。但是,如果我选择除第一行之外的行,则该错误似乎会自行纠正,然后我可以再次选择第一行。当我用我的函数再次更改数据时,我再次无法选择第一行。

任何人都知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题和解决方案。问题是,即使在使用setItems()完全更改数据之后,slickgrid仍会保留有关活动单元格/行的所有数据。内部变量activeCell仍设置为索引值,即使不再选择单元格也是如此。解决方案是在更改数据之前调用grid.resetActiveCell()。所以工作代码如下所示:

function setData(dataArray, uniqueIdFieldName) {
    grid.resetActiveCell(); //THIS LINE ADDED
    dataView.beginUpdate();
    dataView.setItems(dataArray, uniqueIdFieldName)
    dataView.endUpdate();
    grid.resizeCanvas();
    grid.invalidate();  
}

在我看来,这是slickGrid中的一个错误。 setItems()函数应该在更改行之前在内部重置选择变量,因为显然当前选择在重置项目后将变为null和void,而不这样做会使整个选择模型处于错误状态。

相关问题