Kendo UI网格过滤器数据未更新

时间:2017-04-20 18:35:59

标签: kendo-ui kendo-grid

也许有人可以帮我解决这个问题...

我的Kendo UI网格

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

其中self.positions()是一个通过ajax Get填充的淘汰可观察数组。

我现在的问题是当我刷新我的位置可观察数组并将新数据重新绑定到网格时,列过滤器不会正确刷新数据。 我的过滤器仍显示旧位置数据。

任何帮助???

Kendo UI DOJO示例: http://dojo.telerik.com/oVOsi/31

3 个答案:

答案 0 :(得分:2)

我发现这个解决方案效果很好:

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

诀窍是使用方法“setDataSource()”,它将重置所有过滤器。

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

答案 1 :(得分:0)

在网格数据源上调用query并清除过滤器/重置数据源上的任何其他属性对我有用(并进行额外检查以确保存在过滤器)。类似的东西:

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

修改 现在我了解了确切的要求,您可以在每次单击按钮时重建网格(因此根据数据重建列过滤器)。我把一个dojo示例放在一起:

Dojo example of rebuilding grid

答案 2 :(得分:-1)

尝试清除数据源对象上的过滤器:

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