2013-01-04 52 views
1

我在樹上建立/展開摺疊SlickGrid示例找到hereSlickGrid在排序後重新應用/修復過濾器

我已經添加到它的排序(在%完成列),但一旦排序由用戶觸發過濾器不更新 - 展開/摺疊圖標不起作用,並在錯誤的地方。

如何在排序後重新應用文件管理器? 我用下面的代碼嘗試,但它不工作:

dataView.setFilter(myFilter); 
grid.render(); 

你可以看到我有什麼here

更新 當我打開的jsfiddle我注意到一個小提琴頁面的html部分可以顯示爲空白,如果刷新頁面,代碼似乎會出現。

更新 我設法創造了一個醜陋的工作。你可以找到一個更新的例子here

基本上我排序數據然後銷燬並重新創建網格。我仍然想知道是否有更加優雅的解決方案。

回答

0

你是小提琴鏈接實際上並沒有運行我的機器,但從閱讀你的源代碼,你要麼重建DataView,要麼你必須強制你的DataView觸發fitler重新創建所有的縮進和摺疊/展開元素。

強制刷新的最簡單方法是呼叫grid.invalidate()然後grid.render()。如果這不起作用,您可以在每個元素上對updateItem()進行排序。這些都會強制網格重新計算行索引和這些索引的視覺效果。

請注意,您必須小心排序,因爲父行之間的關係並非強制行排序 - 也可以是一個項目(id 2)的孩子(id 5)可以使用上面的行1家長和父母崩潰仍然會使其消失。它看起來像你的排序算法已經處理了這一點,但這是其他人閱讀這個問題的重要一點。