Kendo ui KendoUI网格-数据的批量导入/设置非常慢

Kendo ui KendoUI网格-数据的批量导入/设置非常慢,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我最近遇到了一个问题,批量导入数据和设置现有行的值花费的时间太长。通常的症状是浏览器挂起和“无响应脚本”警报 这是密码 function import() { var dataSource = $("#" + gridId).data("kendoGrid").dataSource; var data = dataSource.data; var importedData = null; // from somewhere..... for(var i =

我最近遇到了一个问题,批量导入数据和设置现有行的值花费的时间太长。通常的症状是浏览器挂起和“无响应脚本”警报

这是密码

function import() {
    var dataSource = $("#" + gridId).data("kendoGrid").dataSource;    
    var data = dataSource.data;
    var importedData = null; // from somewhere.....
    for(var i = 0; i < data.length; i++) {
        data[i].set("column-name-0", importedData[i][0]);
        data[i].set("column-name-1", importedData[i][1]);
    }
}
函数导入(){
var dataSource=$(“#”+gridId).data(“kendoGrid”).dataSource;
var data=dataSource.data;
var importedData=null;//来自某处。。。。。
对于(变量i=0;i
如何解决这个缓慢的问题?

上面提到的“set”方法实际上是“observateObject”的一个方法,这实际上意味着每次调用set时,它都会触发网格刷新。想象一下,在上面的示例中,为每个单元格修改刷新网格

解决方案是不使用set方法,而是直接在模型对象上设置新值,然后触发网格刷新。见下文

function import() {
    var grid = $("#" + gridId);
    var dataSource = grid.data("kendoGrid").dataSource;    
    var data = dataSource.data;
    var importedData = null; // from somewhere.....
    for(var i = 0; i < data.length; i++) {
        data[i]["column-name-0"] = importedData[i][0]); // the value should be in correct datatype of the column
        data[i]["column-name-1"] = importedData[i][1]);
    }
    grid.refresh();
}
函数导入(){
var grid=$(“#”+gridId);
var dataSource=grid.data(“kendoGrid”).dataSource;
var data=dataSource.data;
var importedData=null;//来自某处。。。。。
对于(变量i=0;i
请注意,我不需要使用列的“格式”或列的“模板”,以防它们已被设置。网格刷新会自动处理这些问题

但是,请确保导入数据的数据类型与列的数据类型匹配。否则,您应用的格式化程序将无法工作

希望这有帮助