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
-~----------~----~----~----~------~----~------~--~---

Responder a