2014-10-09 56 views
10

我正在使用Angular UI Grid來顯示一些數據。排序已啓用並初始化以及選擇單個行:如何訪問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的行或排序數據?

我知道外部排序可以解決這個問題,因爲那時我會將已排序的數據分配給網格。但在我看來,這似乎是不必要的開銷...

+0

在途中有一個修復 - 我將發佈一個答案,一旦發佈。 – Spontifixus 2014-10-14 10:37:52

+0

答案上的任何單詞? – 2015-03-18 20:28:52

回答

10

$scope.gridApi.core.getVisibleRows()以當前排序/過濾順序返回一個行數組。

+1

如果它只返回實際可見的行,它將不會有任何好處。所有500行不可能同時可見。 – Jesper 2015-04-18 07:22:32

+2

它返回整個數據集,我剛剛檢查過它: '$ scope.gridOptions.data.length'返回與'$ scope.gridApi.core.getVisibleRows()。length'相同的值。 http://i.imgur.com/42N6EZA.png – 2015-04-20 09:57:11

+0

請注意,如果您應用了cellTemplates(例如12345 - > 12,345),那麼返回的數據是[沒有格式化的數據](https://github.com/ angular-ui/ng-grid/issues/3597)applied – 2015-05-26 22:26:51