DataGrid ItemRender

6 views
Skip to first unread message

Marcello Fontolan

unread,
Oct 12, 2008, 10:00:22 PM10/12/08
to fle...@googlegroups.com
Pessoal,

Sei que o assunto já foi tratado, pesquisei no histórico e também em
outros locais, mas confesso que não ficou claro para mim...
Gostaria de colocar, "readonly", um checkbox dentro de um DataGrid.
Ele na verdade já aparece para todos os registros porém, com os
seguintes problemas:

- independente do valor do campo ("t" ou "f"), ele sempre aparece
"não selecionado";
- não está "readonly" então, o usuário pode alterar seu valor.

Agradeço a ajuda.

Marcello Fontolan

Elvis Fernandes

unread,
Oct 12, 2008, 10:09:42 PM10/12/08
to fle...@googlegroups.com
Olá, Marcelo!

Entendi a sua dúvida, mas não ficou muito claro pq não sei como você implementou. Poderia mandar um trecho do código (pelo menos onde você coloca o ItemRenderer no Grid) ... ?

Abraço!

Elvis Fernandes


2008/10/13 Marcello Fontolan <marf...@gmail.com>

Mário Júnior

unread,
Oct 12, 2008, 10:29:32 PM10/12/08
to fle...@googlegroups.com
Realmente, isso já foi muito discutido inclusive o Beck fez um post muito criativo e original falando sobre editorDataField, vc pode ver esse post por aqui:

http://blog.dclick.com.br/2008/02/24/problemas-com-item-renderers-ou-item-editors/pt/


Mas, como volta e meia sempre aparece dúvidas assim, vou fazer algo q geralmente não faço (postar código)... bem, seria mais ou menos assim... (vou escrever na unha aqui, portanto pode ter alguns errinhos =D - preguiça de abrir o eclipse - já sao 23h de domingo)

<datagridcolumn rendererIseditor="true" editorDataField="selected" datafield="<atributo_do_seu_objeto>">
    <itemRenderer>
        <component>
            <CheckBox selected="{data.<atributo_do_seu_objeto>}" enable="false" />
        </component>
    </itemRenderer>
</datagridcolumn>

A "mágica" para fazer com q o checkbox tenha seu estado alterado (true/false) de acordo com o atributo do seu objeto é setar o editorDataField para o atributo "selected" que pertence ao checkbox. Ou seja, vc está "dizendo" q a propriedade "selected" do checkbox será relativa ao campo dataField q aponta para o atributo do seu objeto. Assim, se o atributo for true entao o selected será true tb, e vice-versa.

Falamos sério.. flexibilidade assim só existe no flex.....vai tentar fazer um "itemRenderer" com grids do swing (java para desktop) pra ver oq acontece.. =P


Espero ter compreendido.. um abraço.


--
Mário de Souza Júnior
Programador Java / Adobe Flex
(44) 4009-3550 Maringá-PR
http://blog.mariojunior.com
junin...@gmail.com (gtalk, msn, etc..)

Marcello Fontolan

unread,
Oct 12, 2008, 10:40:39 PM10/12/08
to fle...@googlegroups.com
    Elvis, Mário,

    Estou aprendendo Flex e acho realmente fantástico, uma grande, grande sacada da Adobe.
    O que estou tentando fazer agora é simplesmente mostrar um checkbox para cada registro, mostrando o estado do campo ("t" ou "f").
    Os dados são passados por XML em uma váriavel XMLList e o campo boolean referido é "inativo" que vem do Postgres como "t" ou "f".
    Tentei muita coisa, pesquisei outras tantas mas...
    O exemplo abaixo mostra o checkbox porém coloca "true" para todos os checkbox, independente do valor do próprio registro.


                    <mx:DataGridColumn headerText="INATIVO" dataField="inativo">
                        <mx:itemRenderer>
                            <mx:Component>
                                <mx:CheckBox selected="{data.inativo}" enabled="false"/>
                            </mx:Component>
                        </mx:itemRenderer>
                    </mx:DataGridColumn>

    abraços,

    Marcello Fontolan

Elvis Fernandes escreveu:

Marcello Fontolan

unread,
Oct 12, 2008, 10:46:16 PM10/12/08
to fle...@googlegroups.com
    Funcionou com a alteração abaixo que, não tenho certeza ser a forma correta:


                    <mx:DataGridColumn headerText="INATIVO" dataField="inativo">
                        <mx:itemRenderer>
                            <mx:Component>
                                <mx:CheckBox selected="{(data.inativo == 't')}" enabled="false"/>

                            </mx:Component>
                        </mx:itemRenderer>
                    </mx:DataGridColumn>



Elvis Fernandes escreveu:
Reply all
Reply to author
Forward
0 new messages