我将SlickGrid的分页版本与CheckboxSelection-Plugin结合使用。不幸的是,当一个行离开当前网格页面时,该行选择将丢失,并且当再次访问该页面时,该行选择不会恢复。此行为也可以用SlickGrid example #4重现。 (单击网格页脚中的小灯泡图标以打开分页)

我已经将此事告知了SlickGrid的作者,但是他不认为这种行为是一个错误,因为SlickGrid不仅仅是一个添加数据的解决方案,而是一个网格框架。

是否有人对如何在适用于分页和非分页网格的SlickGrid中实现可靠的选择持久性有想法?

最佳答案

最终,通过调整示例4中的grid.onSelectedRowsChanged回调,我获得了一些成功。关键区别在于,每次选择更改时,我都不会重置全局selectedRowIds数组,因为grid.getSelectedRows()仅给我提供了选定的行索引当前页面。相反,我首先将所有新选择的行添加到selectedRowIds数组,然后对其进行迭代以检查其当前页条目之一是否已被取消选择。

grid.onSelectedRowsChanged.subscribe(function (e) {
    var selRows = grid.getSelectedRows();
    // add all newly selected rows to the selection
    for (var i = 0, l = selRows.length; i < l; i++) {
        var item = dataView.getItem(selRows[i]);
        if (item) {
            var rowId = item.id;
            if (selectedRowIds.indexOf(rowId) < 0) {
                selectedRowIds.push(rowId);
            }
        }
    }

    //check if a previously selected row has been deselected
    for (var i = 0, l = selectedRowIds.length; i < l; i++) {
        var row = dataView.getRowById(selectedRowIds[i]); // see if the selected row is   available on the current page
        if (row && selRows.indexOf(row) < 0) {
            selectedRowIds.splice(i, 1); //remove row from array
        }
    }
   });

关于jquery - SlickGrid:如何将选定的行保留在分页网格中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6764204/

10-12 13:29