2013-05-26 29 views
8

分組時,ng-grid創建外觀和行爲與常規行不同的組行。特別是,組行不顯示常規列,但顯示由aggregateTemplate定義的單個合併行。我試圖做的是自定義組行以包含聚合列數據。例如:Angular UI Grid - 如何自定義聚合行的行爲

列:
NAME | VALUE

Data:
name1 | 5
name1 | 5
name2 |當名稱分組1

網格顯示:
- 名1 | 10(這是第一組擴展)
- name1 | 5(這些是實際的數據行)
- name1 | 5(這些是實際的數據行)
- name2 | 1(這是第二組行被摺疊)

請注意,組行顯示兩列,並且它們的VALUE等於其子組的總和。
如果您熟悉ms excel數據透視表,那就是我試圖模擬的分組類型功能。

在這裏堆棧溢出類似的問題(How to set aggregation with grouping in ng-grid)顯示瞭如何做孩子聚合計算的例子,但我卡在如何讓NG-網格顯示像單獨的列規則的行輸出。看看ng-grid代碼看起來不是一件容易的事情。任何人都有這方面的經驗?
謝謝!

回答

3

這是一個古老的questiotn但我有完全相同的問題,所以我給我的解決方案在這裏:

我抄在aggregateTemplate細胞模板,然後適應它顯示的箭頭,稱爲功能計算總價值(我只是複製的第一行實例的值,總結,對值最小或最大可能在列定義進行參數)

groupTemplate= 
     '<div ng-style="{\'top\':row.offsetTop+\'px\'}" class="{{row.aggClass()}}"></div>' 
     +'<div ng-click="row.toggleExpand()" ng-style="{ \'cursor\': row.cursor ,\'top\':row.offsetTop+\'px\'}" ng-repeat="col in renderedColumns" ng-class="col.colIndex()" class="ngCell ngCellGroup {{col.cellClass}}">' 
       +'<div class="ngVerticalBar" ng-style="{height: rowHeight}" ng-class="{ ngVerticalBarVisible: !$last }">&nbsp;</div>' 
       +'<div >{{aggFc(row,col) }}</div>' 

     +'</div>'; 

    $scope.aggFc=function(rowAgg,col){ 
     var row=rowAgg.children[0]; 
     if(row.entity[col.field] && col.cellFilter){ 
      console.log("'"+row.entity[col.field]+"' |" +col.cellFilter); 
      return $scope.$eval("'"+row.entity[col.field]+"' |" +col.cellFilter); 
     } 
     return row.entity[col.field] 
    }; 

    $scope.yourGrid = 
      { 
       data: '...', 
       enableCellSelection: false, 
       enableRowSelection: true, 
       aggregateTemplate:groupTemplate, 
       ... 

我覺得這個解決方案可以通過調整「$使用scope.aggFc「功能的靈感來自你給的鏈接(How to set aggregation with grouping in ng-grid

0

獲得資金,你可以改變aggFC喜歡的東西:

$scope.get_total= (col,row) -> 
    # used by the footer template to access column totals. 
    return $scope.totals[col.field] if _.isUndefined(row) 
    _.reduce(row.children, ((sum, child) -> sum + child.entity[col.field]), 0) 

(咖啡腳本和下劃線假設) 請注意,我用的是同樣的功能,兩個尾(總爲整個表)和aggrows。在頁腳的情況下,不會傳入任何行,因此將返回預先計算的總計。 如果一個行通過,它被認爲是一個聚合,並且它的孩子被加總爲該列。

相關問題