Não é de hoje eu venho falando que trabalhar com itemRenderer/Editor não é fácil. Como você pode ver aqui, aqui e aqui existe uma dúvida recorrente de Flex. Na ultima vez que esta dúvida surgiu veio a minha cabeça a idéia de responder de uma maneira inusitada. O objetivo é fazer com que as pessoas não fiquem indiferentes a este post, e se eu for bem sucedido talvez este post se torne referência quando tal dúvida surgir novamente.
Este post foi originalmente publicado na FlexDev. Espero que eu possa estar ensinando algo com o texto a seguir, mas espero também que você dê boas gargalhadas enquanto lê.
O “editorDataField ” é testado e aprovado pelos Laboratórios Adobe e nós garantimos: Ele funciona!

“Eu desenvolvi o código acima, mas ao executá-lo, toda vez que eu marco um CheckBox na ultima linha do DataGrid e faço scroll ele perde o estado.”
“Eu também já vi algo parecido, e ao observar o valor dos objetos eu percebi que eles não estavam sendo atualizados conforme eu marcava o CheckBox. É como se o CheckBox não estivesse mudando o valor da propriedade do objeto correspondente.”
Estes são casos comuns. Mas veja como o super “editorDataField” pode resolver o seu problema.

“Incrível! Depois de usar o super ultra plus ‘editorDataField’ os meus problemas acabaram. Agora eu posso fazer scroll a vontade e tudo funciona perfeitamente”.
“Depois de usar o ‘editorDataField’ a minha vida mudou completamente. Agora os objetos são atualizados corretamente e eu não preciso ficar trabalhando até mais tarde para resolver o meu problema. A minha esposa ficou bastante feliz com isso”.
O “editorDataField” age diretamente no problema porque ele permite informar qual propriedade do “itemRenderer/editor” será usada para atualizar o item (linha do DataGrid). Sem isso, a propriedade default será usada e uma vez que a propriedade default é “text”, se você estiver usando um ComboBox, RadioButton ou CheckBox isso não vai funcionar. Por isso, quando você usa um CheckBox, por exemplo, e diz que o “editorDataField” é “selectedItem” o DataGrid pegará o valor desta propriedade para atualizar a propriedade descrita pelo “dataField” do seu DataGridColumn.
Para usar o “editorDataField” com um “itemRenderer” você deve usar também a propriedade “rendererIsEditor” do seu
“DataGridColumn”.
Para usar o “editorDataField” você precisa usar também a propriedade “editable” do seu DataGrid.
Uma vez que você provavelmente não vai querer que todas as colunas sejam editáveis você deve usar também a propriedade “editable” de cada DataGridColumn.
ATENÇÃO: Consulte também o manual do fabricante.
15 comentários
Genial!!
valew pela dica, e realmente rendeu algumas gargalhadas, haha
[]´s
HAHAHAHA Muito Bom hein Beck…
“…A minha esposa ficou bastante feliz com isso.”…
…vou querer um caixa inteira!
[]!
Legal Beck… não tinha visto q vc postou no blog, eu já tinha visto a msg original pela lista flexdev…. muito 10.. além de desenvolvedor, vc poderia trabalhar no marketing da dclick.. ou na vendas… huaHUAhUAhUA…
Parabéns pela originalidade.
Abraços.
Muito boa beck…rsrs
Poxa, desinterrou a minha dúvida de 1 ano atrás.
Essa dúvida é uma daqueles que quase todo mundo passa quando está iniciando.
(até dar uma “geral” na API…rs)
Abraço.
@ Mario Junior,
Marketing? Se der mais dinheiro e menos dor de cabeça por que não? Desde que não seja aquele da propaganda da margarina que faz a família mais feliz…
O que incomoda um pouco é saber que mal dominamos o Flex 2, já saiu o 3 e existem alguns rumores que já estão trabalhando no 4 que trará mundaças tão radicais quanto foi do Flex 1.5 para o 2.0. Vida dura a nossa!
totalmente excelente , funcou legal
valeuuu
Eu já havia testado esse exemplo, realmente funciona. Só que preciso de dois botões, um para selecionar todos os checkBox e outro para deselecionar.
Como faria isso?
Alguém sabe algum comando pra desmarcar uma checkbox? Eu só conheço o selected.
Obrigado
Valeu, tava me quebrando pra resolver isso,
abraço
Opa!
Caaaaaaaaara muito boa essa dica!!!!!!!!!
Pqp Tava apanhando pra esse checkbox! Sem contar o jeito como foi escrito, muito bom cara!
Beck, primeiro parabéns pelo post, sou novo em flex e tive que fazer algo com itemRender usando checkbox no dtaGrid, com essa dica funcionou legal, mas ai, o meu data provider mudou de local para remoto (vindo de um resultado via PHP através de um RemoteObject) e ai, nada mais funcionou. Coloquei no meu VO uma propriedade selected para ver se resolvia e mandei a mesma via PHP alternando entre os valores e o resultado foi que, para os checkbox que estavam “marcados”, ele não deixava mais desmarcar e para os “desmarcados”, o contrário. Acabei resolvendo esse problema utilizando uma técnica postada no link a seguir: http://stackoverflow.com/questions/1130061/problem-with-within-datagrid-of-itemrenderer-checkbox-still-cant-solve-the-pr .
Eu não entendi o porquê do itemReder não ter funcionado na primeira vez com um provider remoto, depois de ter colocado a propriedade selected nele, achei que funcionaria na boa, mas isso não aconteceu. Já passou por isso ou teve que ajudar alguém nessas circunstâncias? Espero que o link também sirva de ajuda para aqueles que tiveram o mesmo problema.
Valew,
[]‘s
Trackbacks
Deixe Seu Comentário