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
-~----------~----~----~----~------~----~------~--~---

Responder a