OK.. Agora mudei o relacionamento fiz ele bidirecional agora tenho
como saber a lista de preços para cada produto, que irá me poupar
muitoos loops.Porém, ainda é necessário passar a condição pelo
parametro.

Olha como pretendo fazer:

private function adicionarColunas():void{

 for(var i:int = 0; i < listaCondicoesQueClienteSelecionou.length; i++)
{

  formaPagamento = listaCondicoesQueClienteSelecionou.getItemAt(i) as
FormaPagamento;
  novaColuna(listaCondicoesQueClienteSelecionou.getItemAt(i) as
FormaPagamento);

  }

}

 private function novaColuna(formaPagamento:FormaPagamento):void{

        dgc = new CustomDataGridColumn();
            dgc.labelFunction = labelFunction; //aqui eu passaria a
forma de pagamento que veio la do for das colunas...

        var cols:Array = dgProdutos.columns;
        cols.push(dgc);

        dgProdutos.columns = cols;

}

private function labelFunction(item:Object, column:DataGridColumn,
outro:Object):String{

  for(var i:int = 0; i < (item as Produto).precos.length; i++){

        if( ((item as Produto).precos.getItemAt(i) as
PrecoProduto).forma_pagamento.pgto_codigo == (outro as
FormaPagamento).pgto_codigo)
        return  formatter.format( ((item as Produto).precos.getItemAt(i) as
PrecoProduto).preco_produto );
}

return "0.00"; //não achou nada

}

É possível?

On 15 fev, 17:22, RafaelViana <rfl.vi...@gmail.com> wrote:
> Assim... Tenho um cadastro de produtos que tem 5 preços de acordo com
> o ICMS (esses preços ficam dentro do objeto produto, e eu acesso
> facilmente pelo objeto do produto), porém em alguns casos o preço deve
> ser pela condição de pagamento (e essas podem ter mais de 5 ou menos,
> é muito variável), portanto criei um cadastro para essas "condições".
>
> Então, um preço vai estar vinculado a um produto e a uma condição.O
> "problema" é que cliente quer que esse preço seja exibido na lista
> (datagrid) que tem no sistema, porém como são "variáveis essas
> condições" eu deveria criar um parametro onde ele informa quais
> tabelas ele quer que sejam exibidas, até ai tudo bem..
>
> Crio as colunas do datagrid dinamicamente, o problema está no
> labelFunction, faço uma pesquisa para trazer todos os preços. Esse
> preço esta da seguinte maneira:
>
> condicao:Condicao
> produto:Produto
> valor:Number
>
> E na tabela tenho uma lista de produtos, então o item do LabelFunction
> é um produto : ok já sei o produto que vou usar para saber o preço.
>
> E a condicao? Viria daonde? Seria esse outro parametro :D
>
> Aproveitando, um outro problema é que: na labelFunction teria um loop
> para iterar nessa lista caso eu tenha 1000 produtos que teriam que
> iterar em uns 3000 preços, algo em torno de 3 milhões de iterações
> para exibir cada coluna de preço no grid (usando o break iria reduzir
> para menos de 700 mil iterações +-) só que se fossem 5 colunas mesmo
> assim daria umas 3 milhões de iterações :S vou estudar um pouco se
> posso mudar a forma de relacionamento entre os preços e o produto,
> arrumando isso me auxiliaria também no problema principal dessa
> discussão :D
>
> On 15 fev, 13:04, Fredy Gadotti <thief...@gmail.com> wrote:
>
>
>
> > O que você quer nesse "outro" que não tem dentro do item?
>
> > 2010/2/15 RafaelViana <rfl.vi...@gmail.com>
>
> > > Como eu consigo receber outro parametro no labelFunction?
>
> > > //preciso da assinatura da função assim:
>
> > > private function labelFunction(item:Object, column:DataGridColumn,
> > > outro:Object):String
>
> > > //só que quando se cria a labelFunction no DataGridColumn:
> > > dgc.labelFunction = labelFunction; //e ele já entende que os
> > > parametros são Object e DataGridColumn... preciso passar um parametro
> > > a mais...
>
> > > --
> > > Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> > > Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
> > > Para sair da lista, envie um email em branco para
> > > flexdev-unsubscr...@googlegroups.com
> > > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev

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

Responder a