gridOptions.api.getSelectedRowsAFTERSORTING()

gridOptions.api.getSelectedRowsAFTERSORTING()

当我在排序的数据集上使用 gridOptions.api.getSelectedRows() 时,数组是根据项目的原始(而非排序)顺序创建的。有没有办法根据项目的实际顺序获取数组?

在网格 API Docs 中有一个名为 forEachNodeAfterFilterAndSort 的方法,它允许您迭代筛选和排序的节点。然后,您可以在迭代这些节点时将它们添加到数组中。

解决方案参见https://github.com/ceolter/ag-grid/issues/1451

array = [];
gridOptions.api.forEachNodeAfterFilterAndSort(function(node) {
    array.push(node.data);
});

此函数将 return 按排序顺序选择节点(改编自 jathri 的回答):

function getSelectedRows (gridApi) {
    const selectedNodes = [];

    // Need to call this instead of getSelectedNodes to preserve sorted order
    gridApi.forEachNodeAfterFilterAndSort(function mapSortedNode ({ data, selected }) {
        if (selected) {
            selectedNodes.push(data);
        }
    });

    return selectedNodes;
}