Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度UI网格-如何自定义聚合行行为_Angularjs_Aggregate_Ng Grid - Fatal编程技术网

Angularjs 角度UI网格-如何自定义聚合行行为

Angularjs 角度UI网格-如何自定义聚合行行为,angularjs,aggregate,ng-grid,Angularjs,Aggregate,Ng Grid,分组时,ng grid会创建外观和行为与常规行不同的分组行。特别是,组行不显示常规列,而是显示aggregateTemplate定义的单个合并行。我试图做的是自定义组行以包含聚合列数据。例如: 列: 名称|值 数据: 名称1 | 5 名称1 | 5 名称2|1 按名称分组时显示的网格: -名称1 | 10(这是展开的第一组行) --名称1 | 5(这些是实际的数据行) --名称1 | 5(这些是实际的数据行) -名称2 | 1(这是折叠的第二组行) 请注意,组行同时显示两列,其值等于其子行

分组时,ng grid会创建外观和行为与常规行不同的分组行。特别是,组行不显示常规列,而是显示aggregateTemplate定义的单个合并行。我试图做的是自定义组行以包含聚合列数据。例如:

列:
名称|值

数据:
名称1 | 5
名称1 | 5
名称2|1

按名称分组时显示的网格:
-名称1 | 10(这是展开的第一组行)
--名称1 | 5(这些是实际的数据行)
--名称1 | 5(这些是实际的数据行)
-名称2 | 1(这是折叠的第二组行)

请注意,组行同时显示两列,其值等于其子行的总和。
如果您熟悉ms excel pivot表,那么这正是我尝试模拟的分组类型功能。

这里关于stack overflow()的一个类似问题展示了一个如何进行子聚合计算的示例,但我一直在讨论如何让nggrid像显示带独立列的常规行一样显示输出。看看ng网格代码,这看起来不是一项容易的任务。有人对此有经验吗?

谢谢

这是一个老问题,但我遇到了完全相同的问题,所以我在这里给出了我的解决方案:

我已经在aggregateTemplate中复制了单元格模板,然后调整它以显示箭头,并调用了一个函数来计算聚合值(我只是复制第一行的值,例如,summing、min或max on值可以在列定义中参数化)

groupTemplate=
''
+''
+' '
+“{{aggFc(行,列)}”
+'';
$scope.aggFc=函数(rowAgg,col){
var row=rowAgg.children[0];
if(行实体[col.field]&&col.cellFilter){
console.log(“'”+row.entity[col.field]+“'|”+col.cellFilter);
返回$scope.$eval(“'”+row.entity[col.field]+“|”+col.cellFilter);
}
返回row.entity[列字段]
};
$scope.yourGrid=
{
数据:“…”,
enableCellSelection:false,
enableRowSelection:true,
aggregateTemplate:groupTemplate,
...

我认为这个解决方案可以通过调整“$scope.aggFc”函数来使用,该函数的灵感来自于您提供的链接()

要获得总和,您只需将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)
(假定为咖啡色脚本和下划线) 请注意,我对footer(整个表的总计)和aggrows使用相同的函数。在footer情况下,没有传入任何行,因此返回预先计算的总计。 如果传递了一行,则假定该行是一个聚合,并对该列的子行求和

$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)