UI Grid gridApi.selection.getSelectedRows()未按选择顺序给出行

问题描述 投票:0回答:1

我有以下用例可以通过'Select All'按钮在ui网格中实现(分页已实现):

  1. 加载首页的初始50条记录,其中包含名称,ID和年龄列。
  2. 单击'全选'以选择所有渲染的行,使用下面的代码:

选择代码: gridApi.selection.selectRow(gridOptions.data [rowIndex]);

获取所选代码: gridApi.selection.getSelectedRows();

到这里为止一切正常。

  1. 现在,单击ID列以对ID进行排序。
  2. 单击“全选”以选择所有渲染的行,使用以下代码:

    gridApi.selection.selectRowByVisibleIndex(rowIndex); // rowIndex是从0到49的循环的索引。

但是当我使用步骤3中定义的逻辑来获取数据时,它以未排序的顺序给出。因此,总体而言,我的用例是选择该列之后的行,并按与在UI上显示的顺序相同的顺序进行提取。

下面是相同的伪代码:

vm.selectAll = function selectAll() {
            var rowIndex;
            vm.gridApi.grid.modifyRows(vm.gridOptions.data);

            for (rowIndex = 0; rowIndex < MAX_SELECTION_ALLOWED; rowIndex++) {
                if(vm.isUISortingApplied){
                    //vm.gridApi.selection.selectRow(vm.gridApi.core.getVisibleRows()[rowIndex].entity);
                    vm.gridApi.selection.selectRowByVisibleIndex(rowIndex);
                }else{
                    vm.gridApi.selection.selectRow(vm.gridOptions.data[rowIndex]);
                }
            }
        };

所以,我应该在一行中询问ui-grid提供的用于选择的功能,然后在应用排序后取回所选择的行是什么?

谢谢!!

我有以下用例可通过'Select All'按钮在ui网格中实现(分页已实现):加载第一页的初始50条记录,其中包括名称,id,年龄列。单击“选择...

angularjs gridview datagridview angular-ui-grid ui-grid
1个回答
0
投票

通过使用gridApi.core.getVisibleRows()函数解决了该问题,该函数在排序后以正确的顺序给出行。我建议通过选择在实现排序的地方使用此功能来选择行。谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.