2017-06-06 1 views
0

Il est facile de faire count, min, max pour les fonctions d'agrégat, mais j'aimerais obtenir une valeur de concaténation de chaîne dans la rangée groupée. Quel type de fonction/agrégateur personnalisé je peux écrire pour agréger des valeurs de chaîne?Les fonctions d'agrégation personnalisées dans l'en-tête angulaire d'ui-grille obtiennent une valeur non numérique

$scope.gridOptions = { 
    enableFiltering: true, 
    treeRowHeaderAlwaysVisible: false, 
    columnDefs: [ 
     { name: 'name', width: '30%' }, 
     { name: 'gender', sort: { priority: 1, direction: 'asc' }, width: '20%', cellFilter: 'mapGender' }, 
     { name: 'age', treeAggregationType: uiGridGroupingConstants.aggregation.MAX, width: '20%' }, 
     { name: 'company', width: '25%' }, 
     { name: 'registered', width: '40%', cellFilter: 'date', type: 'date' }, 
     { name: 'state', grouping: { groupPriority: 0 }, sort: { priority: 0, direction: 'desc' }, width: '35%', cellTemplate: '<div><div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || (row.groupHeader && col.grouping.groupPriority === row.treeLevel)" class="ui-grid-cell-contents" title="TOOLTIP">{{COL_FIELD CUSTOM_FILTERS}}</div></div>' }, 
     { name: 'balance', width: '25%', cellFilter: 'currency', treeAggregationType: uiGridGroupingConstants.aggregation.AVG, customTreeAggregationFinalizerFn: function(aggregation) { 
     aggregation.rendered = aggregation.value; 
     } } 
    ], 
    onRegisterApi: function(gridApi) { 
     $scope.gridApi = gridApi; 
    } 

est ici plunkr - http://plnkr.co/edit/KVq7vC9cFb7uNc9edLYj?p=preview

Actuellement, il est regroupé sur l'état et donne une valeur agrégée max et la somme de deux colonnes âge et équilibre respectivement. Je veux afficher la valeur groupée du genre Sexe comme "Homme, Femme". Comment puis je faire ça?

Répondre

0

j'ai pu le résoudre moi-même, voici la fonction personnalisée pour ajouter concat ou conditionnelle retour de valeur de chaîne -

 { name: 'company', width: '25%', 
     customTreeAggregationFn : function(aggregation, fieldValue, numValue, row) { 
      if(!aggregation.value){ 
      aggregation.value = row.entity.company; 
      } 
     }, 
     customTreeAggregationFinalizerFn: function(aggregation) { 
     aggregation.rendered = aggregation.value; 
     } 
     } 

lien Plunkr à la solution - http://plnkr.co/edit/KVq7vC9cFb7uNc9edLYj?p=preview