Ir para a pagina inicial dos Grupos do Google    flexdev
Re: [flexdev] Re: A Velha história da DataGrid, ItemRenderer e RadioButton...

Marcelo Savioli <marcelo.savi...@dclick.com.br>

Hahahahaha... muito bom Beck.. muito bom!

On 2/22/08, Beck Novaes <beck.nov...@gmail.com> 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.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 2.1 Data" col2="Col 2.2 Data"
> selected="true"/>
>                 <mx:Object col1="Col 3.1 Data" col2="Col 3.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 4.1 Data" col2="Col 4.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 5.1 Data" col2="Col 5.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 6.1 Data" col2="Col 6.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 7.1 Data" col2="Col 7.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 8.1 Data" col2="Col 8.2 Data"
> 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.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 2.1 Data" col2="Col 2.2 Data"
> selected="true"/>
>                 <mx:Object col1="Col 3.1 Data" col2="Col 3.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 4.1 Data" col2="Col 4.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 5.1 Data" col2="Col 5.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 6.1 Data" col2="Col 6.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 7.1 Data" col2="Col 7.2 Data"
> selected="false"/

>                 <mx:Object col1="Col 8.1 Data" col2="Col 8.2 Data"
> 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 <IPra...@gmail.com> 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
marcelo.savi...@dclick.com.br
www.dclick.com.br/blog
www.dclick.com.br