Valeu a força ai Fredy :D
On 16 fev, 21:55, Fredy Gadotti <thief...@gmail.com> wrote: > Gratz! > hehe > > 2010/2/16 RafaelViana <rfl.vi...@gmail.com> > > > > > Aee :D essa parte está ok, agora só falta arrumar outros detalhes > > > Velho problema de insistir em um caminho sem pensar nas outras > > possibilidades... > > > O problema era mais simples do que eu imaginava, e mais simples do que > > parece.Porque passar em outro parametro, ou na columa do item? Se > > existe a column do DataGridColumn? > > > Apenas extendi a column e coloquei uma propriedade forma_pagamento, > > então ao criar uma nova coluna setava a forma de pagamento.Assim na > > label function tenho como recuperá-la e deu certo :D > > > On 16 fev, 20:51, RafaelViana <rfl.vi...@gmail.com> wrote: > > > Ai que está um problema... > > > > Por exemplo: tem produtos que tem 5 condições diferentes, tem preços > > > com 3, tem preços com nenhuma... > > > > No caso no meu produto não vai ter apenas uma condição ( e essa > > > vinculada ao produto) como você propõe no exemplo acima: > > > > if (item[column][dataField] == condition.code) > > > return condition.description; > > > > Eu não tenho essa column condição no produto... (até teria como saber > > > a condição pela lista de preços, mas não daria para usar dessa > > > maneira... porque ai é no caso de uma condição só no produto..) > > > > Mas seria mais ou menos isso, só não posso me basear em uma coluna do > > > produto... > > > > Tive uma idéia... já venho colocar o resultado dela :D > > > > On 16 fev, 20:38, Fredy Gadotti <thief...@gmail.com> wrote: > > > > > Bom, eu não li tudo, mas saquei o que você quer fazer ( eu acho ). > > > > > Tipo, na sua coluna que você quer mostrar o relacionamento de Produto e > > > > Condição, você usaria a labelFunction normal. > > > > E em algum lugar você teria já carregado no seu Model ( assumindo que > > você > > > > usa MVC ), quais são as condições para aquele produto. > > > > > Sabendo qual é a lista de preço para cada produto, você poderia > > simplesmente > > > > usar a labelFunction retornando um valor de uma String. > > > > > private function getPriceCondition(item:Object, > > > > column:DataGridColumn):String { > > > > for each ( var condition:Condition in Conditions){ > > > > if (item[column][dataField] == condition.code){ // não lembro > > se é > > > > exatamente essa a sintaxe, mas é algo próximo > > > > return condition.description; > > > > } > > > > } > > > > > return ""; // não achou nada > > > > > } > > > > > é pseudo-código, não testei ele, mas acho que exemplifica bem. > > > > > Att, > > > > > Fredy. > > > > > 2010/2/16 RafaelViana <rfl.vi...@gmail.com> > > > > > > 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 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 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