KendoUI Grid - 批量导入/设置数据非常慢

时间:2014-11-27 09:30:49

标签: kendo-ui kendo-grid

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

这是代码

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]);
    }
}

我如何解决这个缓慢的问题?

1 个答案:

答案 0 :(得分:0)

&#34; set&#34;上面提到的方法实际上是&#34; ObservableObject&#34;的方法,它实际上意味着每次调用一个集合时,它反过来触发网格的刷新。想象一下,在上面的示例中为每个单元格修改刷新网格。

解决方案是不使用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();
}

请注意,我不需要使用&#39;格式&#39;列或模板&#39;如果已设置,则为列。网格刷新会自动处理。

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

希望这有帮助。