在 Kendo 网格内更改数据太慢

Changing the data within a Kendo grid is too slow

我有一个 kendo 网格,它显示 4000-6000 行、7 列,并且可以由用户过滤以仅显示用户定义的日期范围内的数据。此网格不会更新新数据,而是仅显示在初始化时检索到的完整数据集的一个子集。当我更改正在显示的子集时,会出现非常明显的 5 秒停顿。 我想知道是否有更有效的方法可以更改数据,因为我知道使用 Kendo 网格的程序以更好的性能显示 10,000 行。

这是我用来更新网格的代码。前四行创建一个数据数组,然后调用 dataSource.data() 函数将其放入网格中。这会导致 kendo 网格中的日期格式重置,因此我重新定义了 kendo 网格选项中的列。

//Create new data array based o nthe user defined date range
    let x = chart.scales["x-axis-0"];
    var min = new Date(x.min);
    var max = new Date(x.max);
    var newData = vm.createDataArrayAtDates(min, max)

//place data into the kendo datasource object
    grid = $("#grid").data("kendoGrid");
    data = grid.dataSource.data(newData);

//redefine the columns of the kendo grid
    var options = grid.getOptions();
    options.columns = vm.createGridColumns();
    grid.setOptions(options);

我找到了提高 kendo 网格性能的方法(这也提高了页面上的其他所有内容)。为此,我在 kendo 网格中启用了“虚拟滚动”。打开此功能将 5 秒延迟更改为 5 毫秒延迟!

这是关于虚拟滚动的 telerik 页面的 link: https://www.telerik.com/kendo-angular-ui/components/grid/scroll-modes/virtual/

这是我的实现:

          vm.kendoGrid = $(document).ready(function () {
                    $("#grid").kendoGrid({
                        dataSource: vm.createDataSource(),
                        type: "odata",
                        sortable: true,
                        scrollable: {
                            virtual: true
                        },
                        filterable: {
                            extra: false
                        },
                        columns: vm.createGridColumns(),
                        height: 450
                    })
                });

我在下面复制了虚拟滚动所需的特定行:

sortable: true,
scrollable: {
    virtual: true
}