Bem Daniel, realmente não pode fazer isso.... A solução seria por itemRenderer ou labelFunction. Já comentei sobre o uso de um (itemRenderer) ou outro (labelFunction) na lista flex-brasil, se quiser dar uma olhada leia aqui:
http://br.groups.yahoo.com/group/flex-brasil/message/12259 Então, a solução vc já sabe, mas melhor do saber a solução, é compreender do *porquê* vc não pode fazer como gostaria (Acessar objetos encapsulados diretamente na declaração do dataField) e eu já até expliquei em outro e-mail, mas por incrível q pareça a busca do gmail não encontrou... então vou dar uma pincelada "rápida" aqui na explicação, e como exemplo vou usar o <mx:DatagridColumn /> que é usado no <mx:Datagrid /> e tem implementação básica ao <mx: AdvancedDatagridColum /> ################## Este post pode se tornar comprido devido a explicação ################### Veja só Daniel, abra o fonte da classe DataGridColumn.as (ctrl+click na tag), vá até a linha 1404 e encontrará um método (função) com o nome de * itemToLabel*(data : Object) que retorna uma String. Agora, vendo sua implementação, atente-se para a linha 1419 onde ocorre-se isso: .... data = data[dataField] .... *dataField *é uma string e representa o nome da propriedade q vc informou lá no mxml, lembra? <mx:DatagridColumn dataField="*Pessoa.Endereco*" /> Perceba outra coisa interessante: o uso de acesso a atributos (propriedades do objeto) por meio de colchetes ( objeto["atributo"] ) Agora que já sabemos como uma propriedade é renderizada na coluna, vamos tentar visualizar a fonte do seu problema: Tente visualizar o seguinte objeto: var pessoa : Pessoa = new Pessoa(); pessoa.nome = "Mário" pessoa.idade = 24 pessoa.*contato*.email = "[EMAIL PROTECTED]" pessoa.*contato*.blog = "blog.mariojunior.com" Se vc escrever em uma coluna isso: <mx:DatagridColumn dataField="*nome*"/> Internamente, o componente - para renderizar o atributo "nome" - fará isso lá na linha 1419: .... data = data["nome"]; //data é o seu objeto atual, a "pessoa" em questão .... Logo isso vai retornar o valor "Mário" corretamente naquela célula da coluna. Agora, se vc fizer: <mx:DatagridColumn dataField="*contato.email*"/>, internamente, o componente vai tentar fazer: .... data = data["*contato.email*"]; .... E isso vai dar erro, pq não existe atributo "contato.email" ... oq existe é um atributo "contato" e dentro dele - encapsulado - existe *outro atributo*chamado "email"... logo, a maneira certa de acessar esse atributo é: data = data["contato"]["email"] // Aqui sim, o resultado seria o esperado. Mas como a implementação do componente não espera esse tipo de situação (objetos encapsulados), as maneiras de "contornar" essa situação é passar a responsabilidade para um itemRenderer ou um labelFunction, como vc fez. Assim, eu espero q você - além de saber a solução - saiba também o motivo de ter recorrido a esses caminhos (labelFunction ou itemRenderer). No mais, um forte abraço e desculpa o texto looooongo... -- Mário de Souza Júnior Programador Java / Adobe Flex (44) 4009-3550 Maringá-PR http://blog.mariojunior.com [EMAIL PROTECTED] (gtalk, msn, etc..) --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
