Javascript 启用虚拟化时在剑道网格中选择行

Javascript 启用虚拟化时在剑道网格中选择行,javascript,kendo-ui,kendo-grid,Javascript,Kendo Ui,Kendo Grid,我正在使用kendoUI网格小部件显示数据集。因为数据集的大小相当大,200-400k,所以我使用虚拟化特性来提高性能和可用性。在设置网格时,我遇到了以下问题:因为启用了虚拟化,所以每当页面更改时,这里的网格DOM对象(我指的是表行)都会刷新。网格的实现会导致以下行为:我可以选择行,但在向下滚动到下一页并向后滚动选择后消失。下面是可以重现此问题的示例: 可能有人有类似的问题,可以提供一些解决方法。您可以在网格的数据绑定事件中恢复选择,例如,请注意,这仅适用于单行选择,因此您可能需要适应其他模式:

我正在使用kendoUI网格小部件显示数据集。因为数据集的大小相当大,200-400k,所以我使用虚拟化特性来提高性能和可用性。在设置网格时,我遇到了以下问题:因为启用了虚拟化,所以每当页面更改时,这里的网格DOM对象(我指的是表行)都会刷新。网格的实现会导致以下行为:我可以选择行,但在向下滚动到下一页并向后滚动选择后消失。下面是可以重现此问题的示例:


可能有人有类似的问题,可以提供一些解决方法。

您可以在网格的数据绑定事件中恢复选择,例如,请注意,这仅适用于单行选择,因此您可能需要适应其他模式:

$("#grid").kendoGrid({
    dataSource: dataSource,
    change: function () {
        this._lastSelectedItem = this.dataItem(this.select());
    },
    dataBound: function () {
        var row;
        if (this._lastSelectedItem) {
            row = $(this.tbody).find("tr[data-uid='" + this._lastSelectedItem.uid + "']")
            if ($(row).length > 0) {
                // or this.select(row); if you don't mind the 
                // change event getting triggered again
                $(row).addClass("k-state-selected");     
            }
        }
    },
    height: 430,
    scrollable: {
        virtual: true
    },
    selectable: true,
    columns: columns
});