官方网站(
http://ui-grid.info/docs/#/tutorial/209_grouping)上的ui-grid示例提供了一个分组功能,如下所示:
我想要有分组菜单项,但在列菜单中没有聚合(count,sum,max,min,avg),我找不到删除它们的方法.
我试过的一个解决方案是覆盖uiGridGroupingService,通过为groupingColumnBuilder提供一个装饰器,但是该服务根本没有解决,我不禁想知道是否有更简单的方法来实现这一点.
有没有人知道这个问题的任何解决方案?
在这种情况下,装饰器方法可能是最好的方法.没有配置选项可以从列菜单中删除它.
PS:装饰器只显示可以移除聚合物品.
这是一个与装饰方法有关的工作.
http://plnkr.co/edit/nzBeqbmEVUwmZF0qgyd6?p=preview
app.config(function($provide){ $provide.decorator('uiGridGroupingService',function ($delegate,i18nService,gridUtil) { $delegate.groupingColumnBuilder = function (colDef,col,gridOptions) { if (colDef.enableGrouping === false){ return; } if ( typeof(col.grouping) === 'undefined' && typeof(colDef.grouping) !== 'undefined') { col.grouping = angular.copy(colDef.grouping); } else if (typeof(col.grouping) === 'undefined'){ col.grouping = {}; } if (typeof(col.grouping) !== 'undefined' && typeof(col.grouping.groupPriority) !== undefined && col.grouping.groupPriority >= 0){ col.suppressRemoveSort = true; } col.groupingSuppressAggregationText = colDef.groupingSuppressAggregationText === true; var groupColumn = { name: 'ui.grid.grouping.group',title: i18nService.get().grouping.group,icon: 'ui-grid-icon-indent-right',shown: function () { return typeof(this.context.col.grouping) === 'undefined' || typeof(this.context.col.grouping.groupPriority) === 'undefined' || this.context.col.grouping.groupPriority < 0; },action: function () { service.groupColumn( this.context.col.grid,this.context.col ); } }; var ungroupColumn = { name: 'ui.grid.grouping.ungroup',title: i18nService.get().grouping.ungroup,icon: 'ui-grid-icon-indent-left',shown: function () { return typeof(this.context.col.grouping) !== 'undefined' && typeof(this.context.col.grouping.groupPriority) !== 'undefined' && this.context.col.grouping.groupPriority >= 0; },action: function () { service.ungroupColumn( this.context.col.grid,this.context.col ); } }; if (!gridUtil.arrayContainsObjectWithProperty(col.menuItems,'name','ui.grid.grouping.group')) { col.menuItems.push(groupColumn); } if (!gridUtil.arrayContainsObjectWithProperty(col.menuItems,'ui.grid.grouping.ungroup')) { col.menuItems.push(ungroupColumn); } } return $delegate; }) });