2010-02-19 73 views
6

我具有以下数据:AdvancedDataGrid不显示对象属性

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"} } 
      ] 
     ); 

这个阵列是我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> 

问题是 - AdvancedDataGrid确实嵌套的用户的不显示属性对象,但简单的DataGrid呢。 这里有什么问题?

回答

7

您需要使用labelFunction或itemRenderer。这里是一个的labelFunction

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

这就要求

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

项参数将是你的细胞接收数据的一个例子。

+1

我要补充一点,我真的不知道你的对象模型是什么样子,所以你应该让你的labelFunction,然后把一个断点上的第一条语句并在调试检查“项目”这样你就可以解决正确您正在寻找的财产,无论它在结构中。 – Robusto 2010-02-19 22:23:46