LabelFunction Para todas as tabelas que eu crio, em geral elas se tornam componentes separados para que reutilizar em várias outras telas do programa. Algo interessante que você pode trabalhar com os Datagrid é o LabelFunction, que permite você "personalizar" o label, possibilitando visualizar as informações de um "Objecto dentro de outro Objeto".
LabelFunction, também é essencial quando se trata de um ComboBox, pesquise no Help para maiores informações, aonde você pode formatadar tudo o que você vai mostrar para o usuário. Veja um código de exemplo do DataGrid aonde eu acesso um objeto dentro de outro objeto e ainda formato os campos, meu método "labelFunction" se chama labelColunas. Se você prestar atenção eu ainda coloco com cores diferentes as linhas que eu quero, verificando o tipo do Cliente. <?xml version="1.0" encoding="utf-8"?> <mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import br.com.agroquima.negocio.geral.Cliente; import br.com.agroquima.negocio.geral.PessoaJuridica; import br.com.agroquima.negocio.geral.PessoaFisica; private function labelColunas(item:Object, column:DataGridColumn):String { var label:String = ""; try { var cliente:Cliente = item as Cliente; switch ( column ) { case colCpfCnpj : if ( cliente is PessoaFisica ) { var pessoaFisica:PessoaFisica = PessoaFisica(cliente); label = pessoaFisica.cpf; } if ( cliente is PessoaJuridica ) { var pessoaJuridica:PessoaJuridica = PessoaJuridica(cliente); label = pessoaJuridica.cnpj; } break; } } catch (e:Error) { trace(e.message); } return label; } override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void { if ( this.dataProvider != null && dataIndex < this.dataProvider.length ) { var cliente:Cliente = this.dataProvider[dataIndex] as Cliente; switch ( cliente.tipo ) { case Cliente.TIPO_PESSOA_FISICA : color = 0xffffff; break; case Cliente.TIPO_PESSOA_JURIDICA : color = 0x69bfde; break; case Cliente.TIPO_PESSOA_COOPERATIVA : color = 0xb9b09d; break; case Cliente.TIPO_PESSOA_ORGAO_PUBLICO : color = 0x595441; break; case Cliente.TIPO_PESSOA_REVENDA : color = 0x4a8797; break; } //40662D,819639,B3E7FF,FFFAF0,E07800 //FFCB96,7F654B,FFF1E2,7F7871,CCA278 // } super.drawRowBackground(s, rowIndex, y, height, color, dataIndex); } ]]> </mx:Script> <!-- [Cliente] public var codigo:Number; public var nome:String; public var endereco:String; public var telefone:ArrayCollection; public var cep:String; public var tipo:String; public var fazenda:ArrayCollection; public var patrimonio:ArrayCollection; public var empresa:Empresa; public var campanha:ArrayCollection; public var referencia:ArrayCollection; public var creditoCliente:CreditoCliente; public var cidade:Cidade; public var email:String; public var cadastroSimplificado:Boolean; --> <mx:columns> <mx:DataGridColumn id="colCodigo" headerText="Código" dataField="codigo" width="80"/> <mx:DataGridColumn id="colNome" headerText="Nome" dataField="nome"/> <mx:DataGridColumn id="colCpfCnpj" headerText="CPF/CNPJ" labelFunction="labelColunas" width="120" sortable="false"/> <mx:DataGridColumn id="colTipo" headerText="Tipo" dataField="tipo" width="40" textAlign="center"/> </mx:columns> </mx:DataGrid> Outro Exemplo: ----- Original Message ----- From: "Will" <[EMAIL PROTECTED]> To: "flexdev" <[email protected]> Sent: Friday, December 28, 2007 5:27 PM Subject: [flexdev] Re: Preencher Grid com dados do .NET Acho que entendi melhor o problema, mas ainda nao sei a solução. O que parece estar acontecendo é que tem objetos dentro de um objeto. Como se acessa objetos que estão dentro de um objeto? Acho que é isso. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
