Este é realmente um comportamente estranho. Mas nada que um Work
Around com bons nomes de métodos não resolva:

<mx:Component>
        <mx:HBox>
                <mx:Script>
                        <![CDATA[
                                [Bindable]
                                public var status:Boolean;

                                private function 
onClickHandler(event:MouseEvent):void
                                {
                                        turnOn();
                                }

                                private function 
offClickHandler(event:MouseEvent):void
                                {
                                        turnOff();
                                }

                                private function turnOn():void
                                {
                                        status = data.show = true;
                                        updateButtonState();
                                }

                                private function turnOff():void
                                {
                                        status = data.show = false;
                                        updateButtonState();
                                }

                                private function updateButtonState():void
                                {
                                        data = data;
                                }
                        ]]>
                </mx:Script>
                <mx:Button label="On" enabled="{data.show}"
click="onClickHandler(event)"/>
                <mx:Button label="Off" enabled="{data.show}"
click="offClickHandler(event)"/>
        </mx:HBox>
</mx:Component>

[]'s
Beck Novaes



On Feb 25, 9:21 am, "Elvis Fernandes" <[EMAIL PROTECTED]>
wrote:
> 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
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
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
-~----------~----~----~----~------~----~------~--~---

Responder a