Vale ressaltar que dependendo como está estruturado seu XML você pode
deixar este negócio de trabalhar com XML ou Collections mais gerérico.
O exemplo abaixo mostra como estruturar um XML de modo que você não
precise usar a notação com @ e assim poder trabalhar com XML ou
Collections de objetos de maneira mais transparente.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";>

        <mx:XML id="myXMLData">
                <itens>
                        <item>
                                <col1>Col 1.1</col1>
                                <col2>Col 1.2</col2>
                                <col3>Col 1.3</col3>
                        </item>
                        <item>
                                <col1>Col 2.1</col1>
                                <col2>Col 2.2</col2>
                                <col3>Col 2.3</col3>
                        </item>
                        <item>
                                <col1>Col 3.1</col1>
                                <col2>Col 3.2</col2>
                                <col3>Col 3.3</col3>
                        </item>
                </itens>
        </mx:XML>

        <mx:ArrayCollection id="myArrayCollectionData">
                <mx:Object col1="Col 1.1" col2="Col 1.2" col3="Col 1.3"/>
                <mx:Object col1="Col 2.1" col2="Col 2.2" col3="Col 2.3"/>
                <mx:Object col1="Col 3.1" col2="Col 3.2" col3="Col 3.3"/>
        </mx:ArrayCollection>

        <!--
        As mesmas colunas para o DataGrid que usa o XML e para
        o DataGrid que usa o ArrayCollection. Ou seja, não precisa do "@" no
dataField
        -->
        <mx:Array id="myColumns">
                <mx:DataGridColumn headerText="Col 1" dataField="col1"/>
                <mx:DataGridColumn headerText="Col 2" dataField="col2"/>
                <mx:DataGridColumn headerText="Col 3" dataField="col3"/>
        </mx:Array>

        <mx:DataGrid dataProvider="{myXMLData.item}" columns="{myColumns}"/>

        <mx:DataGrid dataProvider="{myArrayCollectionData}"
columns="{myColumns}"/>

</mx:Application>

[]'s
Beck Novaes


On 21 out, 17:40, "Vicente Maciel Junior" <[EMAIL PROTECTED]> wrote:
> Marcelo,
> A discussão sobre o checkbox no datagrid já foi bastante discutida aqui,
> então se você der uma pesquisada nas mensagens anteriores quanto a
> "itemRenderer", "itemEditor" e a propriedade 'rendererIsEditor' do
> DataGridColumn, você vai encontrar ótimos conteúdos a respeito. Seu foco,
> nesse caso específico deve direcionar a estudar o "itemRenderer" e a
> propriedade "itemRendererIsEditor" que citei. Mas aproveite para etudar o
> "itemEditor" e compreender bem a coisa. Tem uma mensagem do Beck que é
> excelente a respeito. Não é uma questão tão complexa de se resolver. Se
> permanecerem as duvidas a respeito, a galera aqui é das melhores para tentar
> ajudar.
>
> Quanto a ArrayCollection e XMLList, seja utilizando AMF, HTTPRequest ou
> WebService, você sempre poderá utilizar ambos. Não é especificamente essa a
> questão que deve direcionar sua decisão e sim como você vai (ou pode)
> consumir os dados que forem retornados por eles. O que realmente muda é o
> esforço (lógica) que você vai ter que aplicar para trabalhar com um tipo de
> dados ou outro em cada situação.
>
> Eu, particularmente, sempre que possível - e muitas vezes procuro tornar
> isso possivel, quando a situação presente já não é essa - uso AMF (no meu
> caso com o LiveCycle no ColdFusion) me trazendo objetos (uma array destes
> objetos) que são traduzidos para os objetos representados por outras classes
> no lado do Flex. Vide o MetaData "RemoteAlias" à ser aplicado nas classes
> que representarão os dados provenientes do server-side através de AMF.
> Realmente, trabalhando com AMF você acaba sendo incentivado a lidar com
> ArrayCollection. Mas isso não é ia restrição, ok?
>
> Outro detalhe importante é não ligar o formato dos dados ao seu problema com
> o "itemEditor/itemRenderer". Com ambos os formatos de fonte de dados para o
> DataGrid, isso é plenamente funcional.
>
> Veja abaixo um exemplo pra te ajudar:
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; layout="vertical">
> <mx:Script>
> <![CDATA[
> import mx.controls.Alert;
> ]]>
> </mx:Script>
>  <mx:Script>
> <![CDATA[
> import mx.collections.ArrayCollection;
>  [Bindable] private var xmlDataProvider:XMLList =
> <>
> <item name="item 0" selected="false"/>
> <item name="item 1" selected="false"/>
> <item name="item 2" selected="false"/>
> <item name="item 3" selected="false"/>
> <item name="item 4" selected="false"/>
> <item name="item 5" selected="false"/>
> <item name="item 6" selected="false"/>
> <item name="item 7" selected="false"/>
> <item name="item 8" selected="false"/>
> <item name="item 8" selected="false"/>
> <item name="item 10" selected="false"/>
> <item name="item 11" selected="false"/>
> </>;
>  [Bindable] private var arrayCollectionDataProvider:ArrayCollection = new
> ArrayCollection(
> [
> {name: "item 0", selected: false},
> {name: "item 1", selected: false},
> {name: "item 2", selected: false},
> {name: "item 3", selected: false},
> {name: "item 4", selected: false},
> {name: "item 5", selected: false},
> {name: "item 6", selected: false},
> {name: "item 7", selected: false},
> {name: "item 8", selected: false},
> {name: "item 9", selected: false},
> {name: "item 10", selected: false},
> {name: "item 11", selected: false},
> ]
> );
>  ]]>
> </mx:Script>
>  <mx:DataGrid id="dgXML" dataProvider="{xmlDataProvider}" rowCount="5"
> editable="true">
> <mx:columns>
> <mx:DataGridColumn id="dgcXmlName" headerText="name" dataField="@name"/>
> <mx:DataGridColumn id="dgcXmlSelected"
> headerText="selected"
> editable="true"
> dataField="@selected"
> editorDataField="selected"
> rendererIsEditor="true"
>
> <mx:itemRenderer>
> <mx:Component>
> <mx:CheckBox selected="{([EMAIL PROTECTED] == 'true')}"/>
> </mx:Component>
> </mx:itemRenderer>
> </mx:DataGridColumn>
> </mx:columns>
> </mx:DataGrid>
>  <mx:DataGrid id="dgArrayCollection"
> dataProvider="{arrayCollectionDataProvider}" rowCount="5" editable="true">
> <mx:columns>
> <mx:DataGridColumn id="dgcACollName" headerText="name" dataField="name"/>
> <mx:DataGridColumn id="dgcACollSelected"
> headerText="selected"
> editable="true"
> dataField="selected"
> editorDataField="selected"
> rendererIsEditor="true"
>
> <mx:itemRenderer>
> <mx:Component>
> <mx:CheckBox selected="{data.selected}"/>
> </mx:Component>
> </mx:itemRenderer>
> </mx:DataGridColumn>
> </mx:columns>
> </mx:DataGrid>
> </mx:Application>
>
> 2008/10/21 Marcello Fontolan <[EMAIL PROTECTED]>
>
>
>
>
>
>
>
> >    Pessoal, boa tarde,
>
> >    Tem dois assuntos me tirando o sono e até, de certa forma, me
> > desanimando...
> >    Um surgiu da dúvida do outro e vou compartilhar, claro que na
> > esperança de alguma ajuda.
>
> >    Procurei muito sobre como colocar um CheckBox dentro de um DataGrid
> > e consegui fazer ele aparecer corretamente e mostrar seu estado.
> >    Meus problemas começaram quando tentei fazer com que os dados fossem
> > alterados através dele.
> >    PS: o campo que contem o estado vem o Postgres, na forma de "T" ou "F".
> >    Vi inúmeros exemplos, com formas diferentes de fazer porém, não
> > consegui implementar.
> >    Alguns descrevem a implementação apenas com componentes do Flex,
> > outros criam componentes para Render e até um novo DataGrid eu vi!
>
> >    Então, vendo alguns exemplos, descobri que muita gente usa
> > ArrayCollection...
>
> >    Estou usando atualmente os dados na forma de XMLList, sempre obtidas
> > através de HTTPRequest porém, acredito que para usar algo como AMFPHP,
> > webORB ou BlazeDS a forma correta seria uma ArrayCollection dos objetos.
> >    Sei que a resposta é subjetiva pois depende de como cada um resolve
> > fazer sua aplicação, mas é justamente isto que gostaria, de estimular
> > uma pequena discussão sobre como as coisas são feitas.
>
> >    Abraços a todos,
>
> >    Marcello Fontolan
>
> --
> Vicente Maciel Junior
> Independent Web Developer & Consultant
> Adobe Advanced Certified Developer
> Adobe Certified Instructor (ColdFusion & Flash Platform)
> +55 71 9212-0909 / 8120-0035
> MSN: [EMAIL PROTECTED] / Twitter: macieljrhttp://teclandoalto.blogspot.com- 
> Ocultar texto entre aspas -
>
> - Mostrar texto entre aspas -
--~--~---------~--~----~------------~-------~--~----~
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