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



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

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

parsedData = $.parseJSON(data);
var dataSource = new kendo.data.DataSource({
data: parsedData
});
$("#grid").kendoGrid({
dataSource: dataSource, 
. . .

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

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

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

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

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

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

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

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

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

从您的示例代码中,您的DataSource似乎在使用本地数据,而不是获取远程数据?

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

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

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

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

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

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

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

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

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

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

最新更新