Imaginei que não ia conseguir explicar o problema sem o exemplo ... rs ...
Logo abaixo está um exemplo simplificado. Percebi que sempre que usamos um itemEditor num DataGrid, após a modificação do valor, ele só é "efetivado" no objeto "data" quando o foco sai da linha do DataGrid ... esse é o meu problema ... após clicar no botão, ele precisa automagicamente mudar o valor de uma propriedade do objeto "data", que é o que define o status desse próprio botão ... Pra resolver isso, eu mudo o foco para o próprio DG, aí ele atualiza o "data" ... mas se eu clicar em um botão e logo em seguida clicar em outro botão de outra linha, ele não atualiza o status do segundo botão clicado ... Se vocês puderem me indicar uma solução menos "POG", ficarei muito agradecido! =) Valeu!!!!!!!!!!!! <mx:Canvas .............> <mx:Script> <![CDATA[ public function _ligar():void { //Alguma ação meuDG.setFocus(); } public function _desligar():void { //Alguma ação } ]]> </mx:Script> <mx:Component id="botoesOpcoes"> <mx:HBox> <mx:Script> <![CDATA[ [Bindable] public var status:Boolean; private function ligar():void { status = true; outerDocument._ligar(); } private function desligar():void { outerDocument._desligar(); } ]]> </mx:Script> <mx:Button id="btnLigar" enabled="{!data.mostrar}" label="Ligar" click="{ligar()}"/> <mx:Button id="btnDesligar" enabled="{!data.mostrar}" label="Desligar" click="{desligar()}"/> </mx:HBox> </mx:Component> <mx:Canvas width="100%" height="100%"> <mx:DataGrid id="meuDG" dataProvider="{dataProvider}" editable="true"> <mx:columns> <mx:AlgumasColunas ...... /> <mx:DataGridColumn headerText="Opções" dataField="mostrar" itemRenderer="{botoesOpcoes}" editorDataField="status" rendererIsEditor="true" /> </mx:columns> </mx:DataGrid> </mx:Canvas> </mx:Canvas> 2008/2/25 Beck Novaes <[EMAIL PROTECTED]>: > > Olá Elvis, > > Será que você conseguiria isolar este comportamente num exemplinho > simples? > > []'s > Beck Novaes > > On Feb 24, 12:53 pm, Elvis Fernandes <[EMAIL PROTECTED]> wrote: > > Olá, pessoal! > > > > Aproveitando a carona neste tópico, gostaria de pedir uma ajuda: > > > > Usando as dicas do Beck (editorDataField, editable p/ o DG, etc) > > consegui criar meu itemEditor do jeito que eu precisava (valeu, > > Beck!). Só que o problema é que, depois de atualizar o valor do objeto > > "data", ele não é mostrado no DataGrid até que ele perca o foco... > > > > Eu pensei em mudar o foco para outro componente em uma função externa > > ao itemRenderer que é chamada na minha aplicação (tenho um botão no > > meu itemRenderer), mas gostaria de saber se não existe uma solução > > menos "POG" pra isso ... > > > > Tentei usar dg.invalidateDisplayList e outras coisas do tipo, mas não > > deu (sem dúvida tentei fazer qquer besteira ...). > > > > Valeu!!!!! > > > > Elvis Fernandes > > > > On 23 fev, 02:40, Beck Novaes <[EMAIL PROTECTED]> wrote: > > > > > Muito obrigado Rafael por ter entendido o espírito da brincadeira. > > > Sinceramente eu gostaria que as pessoas, além de aproveitar a > > > informação, dessem boas risadas com a explicação (se é que fui bem > > > sucedido no que diz respeito à didática). Quem disse que não podemos > > > nos divertir enquanto aprendemos? > > > > > []'s > > > Beck Novaes > > > > > On 22 fev, 20:44, "Rafael D. Araujo" <[EMAIL PROTECTED]> wrote: > > > > > > Hehe, gostei da resposta. > > > > Cheguei a usar o editorDataField, mas descartei-o porque (acho) ele > > > > procurava a propriedade informada no editorDataField dentro do > componente > > > > filho logo abaixo do mx:component, no meu caso dentro do VBox (e com > isso > > > > dava um null por não achar a propriedade nele). > > > > Segunda-feira vou analisar melhor meu caso pra ver o que posso > fazer. > > > > > > On 22/02/2008, Marcelo Savioli <[EMAIL PROTECTED]> > wrote: > > > > > > > Hahahahaha... muito bom Beck.. muito bom! > > > > > > > On 2/22/08, Beck Novaes <[EMAIL PROTECTED]> wrote: > > > > > > > > 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): > > > > > > ============================ > > > > > > > > <mx:DataGrid> > > > > > > <mx:dataProvider> > > > > > > <mx:Object col1="Col 1.1 Data" col2="Col 1.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 2.1 Data" col2="Col 2.2Data" > > > > > > selected="true"/> > > > > > > <mx:Object col1="Col 3.1 Data" col2="Col 3.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 4.1 Data" col2="Col 4.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 5.1 Data" col2="Col 5.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 6.1 Data" col2="Col 6.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 7.1 Data" col2="Col 7.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 8.1 Data" col2="Col 8.2Data" > > > > > > selected="false"/ > > > > > > > > </mx:dataProvider> > > > > > > <mx:columns> > > > > > > <mx:DataGridColumn dataField="col1" > headerText="Col 1"/> > > > > > > <mx:DataGridColumn dataField="col2" > headerText="Col 2"/> > > > > > > <mx:DataGridColumn dataField="selected" > > > > > > headerText="Selected"> > > > > > > <mx:itemRenderer> > > > > > > <mx:Component> > > > > > > <mx:CheckBox selected="{ > > > > > > data.selected}"/> > > > > > > </mx:Component> > > > > > > </mx:itemRenderer> > > > > > > </mx:DataGridColumn> > > > > > > </mx:columns> > > > > > > </mx:DataGrid> > > > > > > > > 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 ver o valor dos objetos eu > > > > > > percebi que eles não estavam sendo atualizados conforme eu > marcava o > > > > > > CheckBox." > > > > > > > > Não se preocupem. Estes são casos comuns. Mas veja como o super > > > > > > "editorDataField" pode resolver o seu problema: > > > > > > > > Caso Real (exemplo que funciona): > > > > > > ========================= > > > > > > <mx:DataGrid editable="true"> > > > > > > <mx:dataProvider> > > > > > > <mx:Object col1="Col 1.1 Data" col2="Col 1.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 2.1 Data" col2="Col 2.2Data" > > > > > > selected="true"/> > > > > > > <mx:Object col1="Col 3.1 Data" col2="Col 3.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 4.1 Data" col2="Col 4.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 5.1 Data" col2="Col 5.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 6.1 Data" col2="Col 6.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 7.1 Data" col2="Col 7.2Data" > > > > > > selected="false"/ > > > > > > > > <mx:Object col1="Col 8.1 Data" col2="Col 8.2Data" > > > > > > selected="false"/ > > > > > > > > </mx:dataProvider> > > > > > > <mx:columns> > > > > > > <mx:DataGridColumn dataField="col1" > headerText="Col 1" > > > > > > editable="false"/> > > > > > > <mx:DataGridColumn dataField="col2" > headerText="Col 2" > > > > > > editable="false"/> > > > > > > <mx:DataGridColumn dataField="selected" > > > > > > headerText="Selected" > > > > > > rendererIsEditor="true" > > > > > > editorDataField="selected"> > > > > > > <mx:itemRenderer> > > > > > > <mx:Component> > > > > > > <mx:CheckBox selected="{ > > > > > > data.selected}"/> > > > > > > </mx:Component> > > > > > > </mx:itemRenderer> > > > > > > </mx:DataGridColumn> > > > > > > </mx:columns> > > > > > > </mx:DataGrid> > > > > > > > > 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: > > > > > > > > > http://livedocs.adobe.com/labs/flex3/html/help.html?content=cellrende... > > > > > > > > P.S.: Pessoal, desculpem a brincadeira, mas essa foi uma maneira > que > > > > > > eu encontrei (adicionando um toque de humor) de deixar isto na > > > > > > "memória" das pessoas uma vez que este é um dos problemas mais > > > > > > recorrentes do Flex que eu já vi até hoje. > > > > > > > > On Feb 22, 4:40 pm, HideLine <[EMAIL PROTECTED]> wrote: > > > > > > > Olá, > > > > > > > > > Sempre que uso ItemRender em uma DataGrid com componentes de > ação, > > > > > > > tenho problemas em manter o estado, deste componente dentro da > > > > > > > DataGrid. > > > > > > > > > Ex: > > > > > > > > >http://forum.flexbrasil.com.br/viewtopic.php?f=3&t=187 > > > > > > > > > Se alguém já achou uma solução, por favor post aki e lá para o > > > > > > > rdaraujo! > > > > > > > > > Obrigado. > > > > > > > > -- > > > > > > Marcelo Curi Savioli > > > > > > D-Click Web & Mobile Solutions > > > > > > [EMAIL PROTECTED] > > > > > >www.dclick.com.br/blog > > > > > >www.dclick.com.br > > > > > > -- > > > > Atenciosamente, > > > > Rafael D. Araujo > > > --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---