2

我想用最新的数据每 60 秒刷新一次 Kendo UI 网格的内容。

编辑:这是在初始配置时分配数据源的方式:

parsedData = $.parseJSON(data);

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

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

网格的数据源可以简单地一举重新分配吗?还是单独删除 dataSource.data 中的项目,或者通过清除数组,然后注入新项目或整个替换数组会更好?Kendo 数据源中观察模式的实现是否表明一种方法优于另一种方法?

我还没有开始做这个,但是根据我对网格的经验,可以追溯到早期的 Visual Basic,更改网格的数据源总是有不良的副作用,我没有理由期望这会更顺利航行。希望我是错的。

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

4

4 回答 4

7

我们使用的是 Kendo 2012.3.1315.340 版本,对我们来说它是这样工作的:

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

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

我希望这可以帮助别人。

于 2013-03-14T13:09:11.830 回答
2

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

$("#grid").data("kendoGrid").dataSource.data(parsedData);
于 2012-12-15T14:30:51.813 回答
1

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

如果它正在获取远程数据,您可以简单地调用:

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

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

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

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

我面前没有一个可以尝试的工作示例,但是如果dataSource.data()您的网格行在调用该函数后没有刷新,那么您可能还需要在网格上调用刷新:

function updateGridData (parsedData) {
    var grid = $("#grid").data("kendoGrid");
    grid.dataSource.data(parsedData);
    grid.refresh();
}
于 2012-12-15T15:59:05.660 回答
0

要更新网格,您需要处理数据源上的更改事件。

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

当您更改数据源的数据时,这应该会更新您的网格。

于 2012-12-15T13:19:00.737 回答