Soma AdvancedDataGrid

7 views
Skip to first unread message

Evandro

unread,
Mar 12, 2010, 9:43:41 AM3/12/10
to flexdev
Bom dia galera... Estou com um probleminha no AdvancedDatagrid
Preciso exibir um AdvancedDatagrid da seguinte forma..., sendo que a
coluna valor eu possa digitar...

Nome | Valor
--------------------------------------------------------------------------------------------------------
Grupo1 | 17.000,00 - SOMA O TOTAL DOS SUBGRUPOS
>SubGrupo2 | 15.000,00 - SOMA O TOTAL DOS ITENS
>>Item3 | 5.000,00
>>Item4 | 5.000,00
>>Item5 | 5.000,00
>SubGrupo6 | 2.000,00 - SOMA O TOTAL DOS ITENS
>>Item7 | 2.000,00

A lista que eu recebo é da seguinte forma, tem como agrupar NO ADG
dessa forma
Uma das tentativas foi com um array onde o campo pai referencia qual
item que pertence;

private var arc : ArrayCollection = new ArrayCollection([
{id:1, nome:'Grupo1', pai:null, valor:0},
{id:2, nome:'SubGrupo2', pai:1, valor:0},
{id:3, nome:'Item3', pai:1, valor:0},
{id:4, nome:'Item4', pai:2, valor:0},
{id:5, nome:'Item5', pai:2, valor:0},
{id:6, nome:'SubGrupo6', pai:1, valor:0},
{id:7, nome:'Item7', pai:6, valor:0}
]);

No ADG, tentei usar o GroupingCollection, porem não consegui agrupar
de forma correta...

<mx:GroupingCollection id="gc" source="{arc}">
<mx:Grouping>
<mx:GroupingField name="pai" groupingFunction="groupFunc" >
<mx:SummaryRow summaryPlacement="group">
<mx:SummaryField operation="SUM " dataField="valor" label="Valor"/
>
</mx:SummaryRow>
</mx:GroupingField>
</mx:Grouping>
</mx:GroupingCollection>


Outra tentativa foi utilizando uma lista com childrens, e no ADG, eu
usei HierarchicalData, o agrupamento ficou correto, mas não consegui
fazer a soma das linhas;

private var grupos : ArrayCollection = new ArrayCollection([
{id:1, nome:'Grupo1', valor:0, children:[
{id:2, nome:'Subgrupo2', valor:0, children: [{id:3, nome:'Item3',
valor:0}, {id:4, nome:'Item4', valor:0}, {id:5, nome:'Item5', valor:
0}]},
{id:6, nome:'Subgrupo6', valor:0, children:[{id:7, nome:'Item7',
valor:0}]}]
}
]);


Pelo SummaryRow, talvez tenha que ser a soma em uma coluna separada,
isso nao teria problema...


Agradeço a ajuda de todos...

Carol Michelassi

unread,
Mar 12, 2010, 9:55:34 AM3/12/10
to flexdev
Como é a sua groupFunc? era pra funcionar bem fácil com GroupingCollection, sempre usei só o name e já funcionou (algumas vezes era necessário um gc.refresh(); para atualizar o grid)

o hierarchical eu já usei também, mas era uma situação mais complexa, o usuário editava e tinha que recalcular mais de uma coluna, envolvia VOs e talz... acho que não é o seu caso né?

Carol Michelassi

2010/3/12 Evandro <evandro...@gmail.com>

--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para fle...@googlegroups.com
Para sair da lista, envie um email em branco para flexdev-u...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Evandro

unread,
Mar 12, 2010, 12:47:36 PM3/12/10
to flexdev
Carol como não entendi a parte do name...

a função é usada para retornar o nome do grupo

private function groupFunc(item:Object, field:GroupingField):String {
return item.nome.toString();
}

neste caso só preciso calcular essa coluna...


Grato!

Carol Michelassi

unread,
Mar 12, 2010, 1:23:28 PM3/12/10
to flexdev
Quis dizer que eu sempre usei só assim (sem groupingfunction), mas considerando que o pai é um campo string, nao o objeto pai inteiro:


<mx:GroupingCollection id="gc" source="{arc}">
       <mx:Grouping>
               <mx:GroupingField name="pai">
                         <mx:SummaryRow summaryPlacement="group">
                                       <mx:SummaryField operation="SUM " dataField="valor" label="Valor"/>
                         </mx:SummaryRow>
               </mx:GroupingField>
       </mx:Grouping>
</mx:GroupingCollection>


Com o hierarchical, pra somar, o jeito mais rápido de fazer acho que é um labelFunction pro campo valor que calcule a soma dos filhos (se o objeto tiver filhos). Mas se isso ficar sendo atualizado, vai ficar inviável. Já fiz um em que os filhos tinham a referência para os pais e aí quando mudavam de valor passavam essa alteração pra cima na árvore, sem ter que recalcular tudo.


Reply all
Reply to author
Forward
0 new messages