2013-02-19 35 views
0

我有一个使用数据视图和行选择模型的单一slickgrid。我经常为数据视图分配一个完全不同的数组,在这个网格中切换数据。更改数据后,无法在slickgrid中选择第一行

我用这个功能来交换数据集在网格:

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

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

任何人都知道为什么会发生这种情况?

回答

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()函数应该在内部重置选择变量,因为显然当前选择将在重置项目后无效并且不会使整个选择模型处于错误状态。

相关问题