2017-04-20 58 views
1

也許有人可以幫我這個問題,我有...劍道UI網格過濾器的數據沒有更新

我的劍道UI電網

$("#grid").kendoGrid({    
     dataSource: { 
      data: self.positions(), 
      pageSize: 50 
     }, 
     filterable: true 
    }); 

其中self.positions()是一個淘汰賽觀察到陣列通過ajax獲取填充。現在

我的問題是,當我刷新我的位置觀察到的陣列,並重新綁定新的數據到網格,列過濾器不正確刷新數據。 我的過濾器仍顯示舊的位置數據。

任何幫助???

劍道UI DOJO實施例: http://dojo.telerik.com/oVOsi/31

回答

-1

調用在網格上的數據源一個query和清除過濾器/上的數據源復位任何其他屬性適用於我(通過額外檢查確保過濾器存在)。喜歡的東西:

var grid = $("#grid").data("kendoGrid"); 
var gridDataSource = grid.dataSource; 
var filter = gridDataSource.filter(); 
if (filter) { 
    gridDataSource.query({ filter: {}, pageSize: 10, page: 1 }); 
} 

編輯 現在我明白了確切的要求,您可以重建每個按鈕上單擊(所以列過濾器根據數據重建)的網格。我已經把道場例如:

Dojo example of rebuilding grid

+0

對不起,但不適合我。你可以給我一個dojo過濾器綁定正確的數據嗎? TKS –

+0

@ezanker,我已經通過發送的例子將成功的清除應用於當'點擊myOtherBtn'了'grid'的過濾器。然而,你在找什麼(我認爲)是重新生成新的過濾器應用到包含新的網格數據的列的網格列?在這種情況下,您可能需要重新構建網格,以便篩選器包含相關數據。 – Sandman

+0

我已經更新我的答案,並提供了一個道場例如你 – Sandman

-1

嘗試數據源對象上清除過濾器:

$('#myOtherBtn').click(function(){ 
    var grid = $("#grid").getKendoGrid();  
    grid.dataSource.data(products2); 
    grid.dataSource.filter({}); 
    grid.refresh(); 
    grid.sync(); 
}); 
+0

謝謝,但我曾嘗試過之前的選擇,但沒有喜悅! –

+0

@RicardoCoelho,我已將此添加到您的Dojo和它的工作... – ezanker

+0

你能檢查我失去了什麼? http://dojo.telerik.com/oVOsi/85 –

0

我發現這個解決方案,它工作得很好:

var grid = $("#grid").data("kendoGrid"); 
    grid.setDataSource(grid.dataSource); 
    grid.dataSource.read(); 

的訣竅是使用的方法「的setDataSource()」,它會重置所有過濾器。

http://dojo.telerik.com/oVOsi/103