Você pode retornar uma String de um summaryObjectFunction
-
09-06-2019 - |
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)
OfferID
está funcionando corretamente, OfferDescription
não.
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;
}
}