Pergunta

Em um Flex AdvancedDatGrid, estamos fazendo muitos agrupamentos.A maioria das colunas são iguais para os pais e para os filhos, então eu gostaria de mostrar o primeiro valor do grupo como o resumo, em vez de MAX, MIN ou AVG

Este código funciona com valores numéricos, mas não textuais (sem a linha comentada você obtém 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]
}      

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

OfferIDestá funcionando corretamente, OfferDescriptionnão.

Foi útil?

Solução

Parece que summaryFunction precisa retornar um número.De acordo com Rastreador de bugs da Adobe, é um bug na documentação:

Comentário de Sameer Bhatt:

Na documentação, é mencionado que - as funções resumidas internas para SUM, MIN, MAX, AVG e Count retornam um número que contém os dados de resumo.

Então as pessoas podem ter uma ideia, mas concordo com você que devemos mencionar claramente que o tipo de retorno deve ser um Número.

Nós o mantivemos como um Objeto para que no futuro seja fácil adicionar mais coisas nele.

Outras dicas

Se você precisar exibir uma string, use a função label em advancedDataGridColumn.Isso renderizará a linha de resumo.

(mx:AdvancedDataGridColumn headerText="Comment" width="140" dataField="comment" 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;


                }

            }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top