我有一个kendo网格,它从json对象中获取数据。网格使用数据的json对象实例化,然后在sort / page / group / filter上我想重新加载数据。我迷上了单击第2页(例如)后触发OK的数据源更改事件,然后将新数据存储在json对象中,并将网格数据源指向该新数据,即 -响应分页触发数据源更改事件 -在事件处理程序中进行ajax调用以获取新的json对象 -成功的ajax调用将重新加载网格数据源
网格可以很好地加载新数据,但是寻呼机随后中断,显示 仅1页(有10页)和“ NaN-NaN of 10 items”。我尝试了多种方法来重新加载数据,例如
$.ajax(...).success: function(result){
var grid = $('#kendo').data("kendoGrid");
var arrData = eval('[' + result.data + ']'); // my new data
var arrSchema = eval(result.schema);
var totalRecs = result.totalRecs;
var ds = BuildDataSource(arrData, arrSchema, totalRecs); // returns a kendo ui datasource object
ds.read();
grid.setDataSource(ds);
grid.refresh();
}
function BuildDataSource(arrData, jsonFields, totalRecs) {
var ds = new kendo.data.DataSource({
change: onDataChange,
data: arrData,
schema: {
total: function (data) {
return totalRecs;
},
model: {
id: "KendoModel",
fields: jsonFields
},
serverPaging: true,
serverSorting: true,
serverGrouping: false,
serverFiltering: true
}
});
return ds;
}
这成功地重新加载了数据,但是如前所述,寻呼机的值被搞砸了。我正在新数据源的架构部分中定义总值。有谁知道如何以这种方式重新加载数据源的json对象,并且仍然使寻呼机正确显示?网络上有许多关于如何实现此目标的建议,但没有一个起作用。