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