Valeu Daniel, o que vc escreveu foi de grande ajuda.
Att,
Lino
On 4 jan, 08:49, Tião da Obra <[EMAIL PROTECTED]> wrote:
> Bom Dia Lino Sky,
>
> Tem sim, pra falar a verdade é mais fácil você percorrer o ArrayCollection
> que alimenta a tabela e logo depois, se você quiser que a soma apareça como
> um último registro, você insere um objeto de Total com o valor do somatório.
>
> Eu pessoalmente tenho trabalhado com o seguinte cenário, faço uma tabela e
> logo abaixo eu coloco um label para o total. Tenha em mente que o
> dataProvider da tabela fica como [Bindable], neste exemplo "listaProdutos".
>
> <mx:Script>
> <![CDATA[
> import br.com.agroquima.util.FormatadorNumerico;
>
> /**
> * Informações da Página.
> * @autor: Daniel Negri
> * @sessao: 5 [Financeiro]
> * @modulo: 5 [Contas a Pagar]
> * @pagina: cadastroGrupoRelacaoPagamento
> * @idPagina: 262
> * [ campos ]
> * codigo: 341
> * nome: 342
> * btnSalvar: 349
> * btnFechar: 350
> */
>
> [Bindable]
> private var total:Number = 0;
>
> [Bindable]
> public var listaProdutos:ArrayCollection = new ArrayCollection();
>
> private function calcularTotal():void {
> var subTotal:int = 0;
> total = 0;
>
> for each ( var item:Produto in listaProdutos ) {
> var valor:int = int(Math.round(produto.valor * 100));
> var valorJuros:int = int(Math.round(produto.valorJuros*100));
>
> subTotal += valor + valorJuros;
> }
>
> total = subTotal / 100;
>
> }
> }
>
> ]]>
> </mx:Script>
>
> <mx:DataGrid id="tabelaProdutos" dataProvider="{listaProdutos}>
> <mx:columns>
> <mx:DataGridColumn headerText="Produto" dataField="nome"/>
> <mx:DataGridColumn headerText="Valor" dataField="valor"/>
> <mx:DataGridColumn headerText="Juros" dataField="juros"/>
> </mx:columns>
> </mx:DataGrid>
>
> <mx:Label id="labelTotal" text="Total: {calcularTotal()}"
> width="100%"
> textAlign="right"
> fontWeight="bold"/>
>
> Perceba que no "text" do label "labelTotal" eu chamo o método
> "calcularTotal()" ao invés de colocar a variável "total". Assim, todas as
> vezes que o ArrayCollection "listaProdutos" for modificado, o método é
> chamado automaticamente, muito prático.
>
> Outro ponto interessante, não sei se você já procurou, em outros tópicos eu
> apresentei o problema do arredondamento de casas decimais, "O Flex não sabe
> somar" e "Ponto Flutuante - BigDecimal". Cuidado com as operações básicas do
> tipo soma, subtração e multiplicação de variáveis do tipo Number, são
> realmente muito muito ruins, repito horríveis, péssimas, entre outras
> lamúrias mais. Para contornar você acaba sendo obrigado a fazer essas
> "manobras" de multiplicar por 100, passar pra inteiro, arredondar, voltar a
> dividir por 100. Acredito que os programadores que fizeram essas novas
> linguagens, JAVA, Phyton, PHP, Javascript, inclusive o ActionScript ...,
> fugiram da aula básica de matemática, "Como somar dois números decimais,
> vamos lá 1 + 1 é igual a?", realmente uma pena. E ainda colocam a culpa no
> outro aluno que construiu os hardwares.
>
> Bons códigos,
> -Daniel Negri
>
> ----- Original Message -----
> From: <[EMAIL PROTECTED]>
> To: "flexdev" <[email protected]>
> Sent: Friday, January 04, 2008 12:47 AM
> Subject: [flexdev] soma de datafield
>
> Gallera, alguem sabe se tem como eu somar um determinando datafild de
> todos os registro da minha grid?
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---