Kendo UI网格:使用新数据每60秒刷新一次网格数据:dataSource和observe()

时间:2012-12-15 12:07:48

标签: timer kendo-ui grid kendo-grid

我希望每隔60秒使用最新数据刷新Kendo UI网格的内容。

编辑:以下是在初始配置中分配dataSource的方法:

parsedData = $.parseJSON(data);

var dataSource = new kendo.data.DataSource({
    data: parsedData
});

$("#grid").kendoGrid({
    dataSource: dataSource, 
    . . .

网格的dataSource可以一举重新分配吗?或者更好的是单独删除dataSource.data中的项目,还是清除数组,然后注入新项目或完整替换数组?在Kendo dataSource中执行观察模式是否表明一种方法超过另一种方法?

我还没有开始这个,但根据我对网格的经验,回到Visual Basic的早期阶段,更改网格的数据源一直有不良的副作用,我没有理由期待这会航行更顺畅。希望我错了。

另一个编辑#(2013年4月26日):如果有一种方法用一组具有与之前相同结构的新行来刷新网格的基础数据,一种方法可以保持扩展/折叠状态网格的分组,非常适合我们的目的。

4 个答案:

答案 0 :(得分:7)

我们正在使用Kendo 2012.3.1315.340版本,对我们来说,它的工作原理如下:

$("#YourGridNameHere").data("kendoGrid").dataSource.read();

就像那样,您再次告诉数据源读取数据。我们通常在requestEnd事件处理程序上执行此操作。

我希望这对某人有所帮助。

答案 1 :(得分:2)

要更新网格的数据源,请使用data方法:

$("#grid").data("kendoGrid").dataSource.data(parsedData);

答案 2 :(得分:1)

从您的示例代码中可以看出,DataSource使用的是本地数据,而不是获取远程数据?

如果它正在获取远程数据,您只需调用:

$("#grid").data("kendoGrid").dataSource.sync();

如果您的网格不是只读的,它将从服务器重新获取,以及执行任何未完成的更新或删除。

要刷新本地数据,您只需在DaaSource上设置.data属性:

$("#grid").data("kendoGrid").dataSource.data(parsedData);

我没有在我面前有一个工作示例来尝试它,但如果你的网格行在调用dataSource.data()函数后没有刷新,那么你 may 还需要在网格上调用refresh:

function updateGridData (parsedData) {
    var grid = $("#grid").data("kendoGrid");
    grid.dataSource.data(parsedData);
    grid.refresh();
}

答案 3 :(得分:0)

要更新网格,您需要处理dataSource上的change事件。

change: function() {
    var grid = $(YouGridSelector).data("kendoGrid");
    grid.refresh();
}

这会在您更改dataSource数据时更新网格。