2008-09-15 12 views
4

Dans un Flex AdvancedDatGrid, nous effectuons beaucoup de regroupement. La plupart des colonnes sont les mêmes pour les parents et pour les enfants, donc je voudrais montrer la première valeur du groupe comme le résumé plutôt que le MAX, MIN ou AVGPouvez-vous retourner une chaîne à partir d'une fonction summaryObject

Ce code fonctionne sur numérique mais pas valeurs textuelles (sans la ligne de commentaire que vous obtenez): NaN de

private function firstValue(itr:IViewCursor,field:String, str:String=null):Object 
{ 
    //if(isNaN(itr.current[field])) return 0 //Theory: Only works on Numeric Values? 
    return itr.current[field] 
}  

le XML:

(mx:GroupingField name="Offer") 
    (mx:summaries) 
    (mx:SummaryRow summaryPlacement="group") 
     (mx:fields) 
     (mx:SummaryField dataField="OfferDescription" label="OfferDescription" summaryFunction="firstValue"/) 
     (mx:SummaryField dataField="OfferID" label="OfferID" summaryFunction="firstValue"/) 
     (/mx:fields) 
    (/mx:SummaryRow) 
    (/mx:summaries) 
(/mx:GroupingField) 

travail de OfferID correctement, OfferDescription s ne le font pas.

+0

http://flexgeek.wordpress.com/2007/06/ est où j'ai fait mes recherches – Dave

Répondre

1

Il semble que la fonction summaryFunction doit renvoyer un nombre. Selon le Adobe bug tracker, il est un bug dans la documentation:

Commentaire de Sameer Bhatt:

Dans la documentation, il est mentionné que - Les fonctions de synthèse intégré pour SUM, MIN, MAX, AVG et COUNT renvoient tous un nombre contenant les données récapitulatives.

Alors les gens peuvent avoir une idée mais je suis d'accord avec vous que nous devrions clairement mentionner que le type de retour doit être un nombre.

Nous l'avons conservé en tant qu'objet afin qu'il soit facile à l'avenir d'ajouter plus de choses.

3

Si vous souhaitez obtenir une chaîne à afficher, utilisez la labelfunction sur advancedDataGridColumn. Cela rendra la ligne récapitulative.

(mx: AdvancedDataGridColumn headerText = "commentaire" width = "140" dataField = "commentaire" labelFunction = "formatColumn" /)

  private function getNestedItem(item:Object):Object { 

       try { 
        if (item.undefined[0]) { 
         item = getNestedItem(item.undefined[0]); 
        } 
       } catch (e:Error) { 
        // leave item alone 
       } 
       return item; 
      }   
      private function formatColumn(item:Object, column:AdvancedDataGridColumn):String { 

       var output:String; 
       // If this is a summary row 
       if (item.GroupLabel) { 

        item = getNestedItem(item); 
       } 

       switch (column.dataField) { 

        case 'comment': 

         return item.comment; 


       } 

      } 
Questions connexes