Domanda

In un Flex AdvancedDatGrid, stiamo facendo molti raggruppamenti.La maggior parte delle colonne sono le stesse per i genitori e per i figli, quindi vorrei mostrare il primo valore del gruppo come riepilogo anziché MAX, MIN o AVG

Questo codice funziona su valori numerici ma non testuali (senza la riga commentata ottieni NaN):

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]
}      

L'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)

OfferIDfunziona correttamente, OfferDescriptione non farlo.

È stato utile?

Soluzione

Sembra che la funzione summaryFunction debba restituire un numero.Secondo il Rilevatore di bug di Adobe, si tratta di un bug nella documentazione:

Commento di Sameer Bhatt:

Nella documentazione si dice che - le funzioni di riepilogo incorporate per Sum, Min, Max, AVG e contano tutti restituiscono un numero contenente i dati di riepilogo.

Quindi le persone possono farsi un'idea, ma sono d'accordo con te sul fatto che dovremmo menzionare chiaramente che il tipo di ritorno dovrebbe essere un numero.

L'abbiamo mantenuto come oggetto in modo che in futuro sia facile aggiungervi più cose.

Altri suggerimenti

Se è necessario ottenere una stringa da mostrare, utilizzare la funzione label su advancedDataGridColumn.Ciò renderà la riga di riepilogo.

(mx:AdvancedDataGridColumn headerText="Commento" larghezza="140" dataField="commento" 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;


                }

            }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top