setOptions 不重新绑定网格? kendo ui

setOptions doesn't rebind grid ? kendo ui

我正在尝试使用 setOptions 重新绑定我的网格,这似乎是一个合适的选项

目前我正在使用 Kendo UI v2014.2.903 并且我正在尝试使用 setOptions 但它不会重新加载我的网格。

代码:

<div id="grid"></div>
<script>
    $("#grid").kendoGrid({
        columns: [
          { field: "name" },
          { field: "age" }
        ],
        dataSource: [
            { name: "Jane Doe", age: 30 },
            { name: "John Doe", age: 33 }
        ]
    });

  setTimeout(function(){
    alert('update check')
    var grid = $("#grid").data("kendoGrid");
    grid.setOptions({
       columns: [
          { field: "name" },
          { field: "age" },
         { field: "code" }
        ],
         dataSource: [
            { name: "Jane Doe", age: 30,code:1 },
            { name: "John Doe", age: 33,code:11 }
        ]
    });
    grid.setDataSource([
            { name: "Jane Doe", age: 30,code:1 },
            { name: "John Doe", age: 33,code:11 }
        ]);
  },2000);
</script>

示例 here 显示了问题。

当我将版本更新到 2016.2.504 时,setOptions 似乎工作示例 here.

如果有人可以给我一些技巧来解决我在 2014 版本中看到的问题,那将会很有帮助。

我认为这可能是 Kendo UI v2014.2.903 的错误或不受支持的功能(我不确定,我认为您应该 post 在 telerik 论坛上获得实际答案。我是也很好奇)

但是既然你想要一些工作 around/hack。一种方法是按如下方式修改列:

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

grid.columns = [];
grid.thead.remove();
ds.data([{ name: "Jane Doe", age: 30,code:1 },
        { name: "John Doe", age: 33,code:11 }]);

这是一个working example