2010-02-19 12 views
6

He siguientes datos:AdvancedDataGrid no muestra las propiedades de objetos

var data: ArrayCollection = new ArrayCollection(
      [ 
       { name: "ProductA", user: {login: "loginA", email: "emailA"} }, 
       { name: "ProductB", user: {login: "loginB", email: "emailB"} }, 
       { name: "ProductC", user: {login: "loginC", email: "emailC"} } 
      ] 
     ); 

Esta matriz es un proveedor de datos para mi AdvancedDataGrid:

<mx:AdvancedDataGrid dataProvider="{data}"> 
    <mx:columns> 
     <mx:AdvancedDataGridColumn headerText="Product" width="55" dataField="name" /> 
     <mx:AdvancedDataGridColumn headerText="User" dataField="user.login" /> 
     <mx:AdvancedDataGridColumn headerText="Email" dataField="user.email" /> 
    </mx:columns> 
</mx:AdvancedDataGrid> 

El problema es - AdvancedDataGrid no muestra las propiedades de usuario anidado objeto, pero el simple DataGrid sí lo hace. ¿Qué pasa aquí?

Respuesta

7

Necesita utilizar una función de etiqueta o un elemento Distribuidor. Aquí está un ejemplo de un labelFunction

<mx:AdvancedDataGridColumn headerText="User" labelFunction="getUserLogin" /> 

que llama a

private function getUserLogin(item:Object, column:AdvancedDataGridColumn) { 
    return item.user.login; 
} 

El argumento del artículo será los datos que tu teléfono está recibiendo.

+1

Debo añadir que realmente no sé cómo se ve tu modelo de objeto, por lo que debes hacer tu etiquetaFunción, luego poner un punto de interrupción en la primera declaración y examinar el "elemento" en el depurador para que puedas abordar la propiedad que está buscando, esté donde esté en la estructura. – Robusto

Cuestiones relacionadas