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

Kendo ui 剑道UI网格过滤器数据未更新,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,也许有人能帮我解决这个问题,我已经 我的剑道UI网格 $("#grid").kendoGrid({ dataSource: { data: self.positions(), pageSize: 50 }, filterable: true }); 其中self.positions()是一个通过ajax Get填充的淘汰可观察数组 我现在的问题是,当我刷新我的位置

也许有人能帮我解决这个问题,我已经

我的剑道UI网格

$("#grid").kendoGrid({            
        dataSource: {
            data: self.positions(),
            pageSize: 50
        },
        filterable: true
    });  
其中self.positions()是一个通过ajax Get填充的淘汰可观察数组

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

有什么帮助吗

剑道UI DOJO示例:
尝试清除数据源对象上的筛选器:

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

在网格数据源上调用
查询
,并清除过滤器/重置数据源上的任何其他属性对我来说都是有效的(需要进行额外检查以确保过滤器存在)。比如:

var grid = $("#grid").data("kendoGrid");
var gridDataSource = grid.dataSource;
var filter = gridDataSource.filter();
if (filter) {
    gridDataSource.query({ filter: {}, pageSize: 10, page: 1 });
}
编辑 现在我了解了确切的要求,您可以在每次单击按钮时重建网格(因此列过滤器将根据数据重建)。我总结了一个dojo示例:


我发现这个解决方案非常有效:

    var grid = $("#grid").data("kendoGrid"); 
    grid.setDataSource(grid.dataSource);
    grid.dataSource.read();
诀窍是使用方法“setDataSource()”,它将重置所有过滤器


谢谢,但我以前尝试过这个选项,但没有乐趣@里卡多切略,对我来说你的道场很管用。单击获取产品,设置过滤器,然后单击获取其他数据。过滤器不存在,所有行都显示出来。@ezanker:他的Dojo不工作。切换产品时,过滤器不会更新。这就是问题所在。对不起,这对我不起作用。你能给我发一个dojo,过滤器在那里绑定了正确的数据吗?tks@ezanker和我发送的示例将在单击
myOtherBtn
时成功清除应用于
网格的过滤器。但是,您想要(我认为)的是使用应用于包含新网格数据的列的新过滤器重建网格列?在这种情况下,您可能需要重建网格本身,以便过滤器包含相关数据。我已经更新了我的答案,并为您提供了一个dojo示例。没问题@ricardochelhothanks很多。在应用自定义过滤器或重置过滤器时,我没有使用pagsize&page,这会造成巨大的性能和其他问题。这为我节省了大量时间。这是一个对我有效的解决方案。非常感谢:)谢谢你的解决方案。它对我有用。