Problemas com Item Renderers ou Item Editors?

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ê.

Problemas com Item Renderers ou Item Editors? O seu Item Renderer/Editor não mantém o estado? O seu Item Renderer/Editor não muda o valor do item da linha correspondente?



Seus problemas acabaram!


Ligue 011 1406 e peça já o “editorDataField”.



O “editorDataField ” é testado e aprovado pelos Laboratórios Adobe e nós garantimos: Ele funciona!

Caso Real (exemplo que não funciona):

Exemplo que não funciona

Depoimento de um programador Flex:

“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.”

Outro programador:

“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.”

Não se desespere!

Estes são casos comuns. Mas veja como o super “editorDataField” pode resolver o seu problema.

Caso Real (exemplo que funciona):

Exemplo que funciona

Depoimento de um programador Flex:

“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”.

Outro programador:

“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.

Mas não é só isso!

Para usar o “editorDataField” com um “itemRenderer” você deve usar também a propriedade “rendererIsEditor” do seu
“DataGridColumn”.

Mas não é só isso!

Para usar o “editorDataField” você precisa usar também a propriedade “editable” do seu DataGrid.

Mas não é só isso!

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.

“editorDataField”. Ligue para 011 1406 e peça já o seu!



ATENÇÃO: Consulte também o manual do fabricante.


15 comentários

  1. Eder Fortunato em 24.fev.08 às 8:58 pm

    Genial!!

    valew pela dica, e realmente rendeu algumas gargalhadas, haha

    []´s

  2. Diogo Moura em 25.fev.08 às 8:42 am

    HAHAHAHA Muito Bom hein Beck…

  3. Hugo Carvalho em 25.fev.08 às 1:14 pm

    “…A minha esposa ficou bastante feliz com isso.”… :-D …vou querer um caixa inteira!

    []!

  4. Mário Júnior em 4.mar.08 às 3:56 pm

    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.

  5. Fábio Goll em 4.mar.08 às 4:42 pm

    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.

  6. Beck Novaes em 4.mar.08 às 6:38 pm

    @ 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!

  7. Ricardo em 14.mar.08 às 11:22 am

    totalmente excelente , funcou legal
    valeuuu

  8. Filippe Brito em 9.dez.08 às 11:49 am

    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?

  9. Anderson em 17.abr.09 às 3:27 pm

    Alguém sabe algum comando pra desmarcar uma checkbox? Eu só conheço o selected.
    Obrigado

  10. Bhola em 17.set.09 às 7:31 pm

    Valeu, tava me quebrando pra resolver isso,

    abraço

  11. Max em 19.ago.10 às 5:16 pm

    Opa!

    Caaaaaaaaara muito boa essa dica!!!!!!!!!

    Pqp Tava apanhando pra esse checkbox! Sem contar o jeito como foi escrito, muito bom cara!

  12. Vagner em 22.out.10 às 10:33 am

    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

  1. DClick Blog
  2. DataGrid comboBox » Bruno bg + ADOBE FLEX
  3. DataGrid ItemEditor ItemRenderer » Bruno bg + ADOBE FLEX

Deixe Seu Comentário