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