【问题标题】:How to access the sorted rows in an Angular UI Grid?如何访问 Angular UI Grid 中的排序行?
【发布时间】:2015-04-17 01:21:00
【问题描述】:

我正在使用Angular UI Grid 来显示一些数据。启用并初始化排序以及选择单行:

vm.gridOptions = {
    enableSorting: true,
    enableRowSelection: true,
    multiSelect: false,
    noUnselect: true,
    columnDefs: [
        { name: '#', field: 'ID' },
        { name: 'Name', field: 'CODE', sort: { direction: 'asc', priority: 1 } },
        { name: 'Comment', field: 'DESCR' },
    ],
    data: []
};

我可以选择一行,并且这些行按照配置按“名称”列按升序排序。

UI Grid Tutorial 210 所示,我添加了在我的数据加载并添加到网格后自动选择第一项的逻辑:

datacontext.getAllGcTab(vm.filter).then(function (result) {
    vm.gridOptions.data = result.results;
    vm.gridApi.selection.selectRow(vm.gridOptions.data[0]);
});

但此代码选择的是未排序数据的第一项。我的网格中大约有 500 个项目,数量不多且性能良好,但在这种情况下,所选项目位于线路下方且不可见。

是否有任何选项可以直接访问 UI Grid 的行或排序数据?

我知道外部排序可以解决这个问题,因为这样我会将已经排序的数据分配给网格。但这在我看来是不必要的开销......

【问题讨论】:

  • 正在解决这个问题 - 一旦发布,我会发布答案。
  • 有什么答案吗?

标签: javascript angularjs sorting angular-ui-grid


【解决方案1】:

$scope.gridApi.core.getVisibleRows() 返回当前排序/过滤顺序的行数组。

【讨论】:

  • 如果它只返回实际可见的行,它不会有任何好处。不可能同时看到所有 500 行。
  • 它返回整个数据集,我刚刚检查过:$scope.gridOptions.data.length 返回与 $scope.gridApi.core.getVisibleRows().length 相同的值。 i.imgur.com/42N6EZA.png
  • 请注意,如果您应用了 cellTemplates(例如 12345 -> 12,345),则返回的数据是 the data without that formattingapply
  • @Jesper 是对的。使用分页时,getVisibleRows() 只返回当前页面的行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多