2013-02-19 66 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()函數應該在內部重置選擇變量,因爲顯然當前選擇將在重置項目後無效並且不會使整個選擇模型處於錯誤狀態。

相關問題