在Flex中的AdvancedDataGrid中设置树列的文件夹图标(基于行数据)

时间:2013-10-22 14:48:57

标签: actionscript-3 flex advanceddatagrid

是否可以根据该行的数据更改AdvancedDataGrid中树列的文件夹图标?

我有一个AdvancedDataGrid,它以树格式显示HierarchicalData(来自XML数据)。我想根据每行的XML数据显示文件夹图标的不同图标。更改文件夹图标的唯一明显方法是设置AdvancedDataGrid的folderOpenIcon和folderClosedIcon属性,但这会为所有行设置文件夹图标。我尝试使用AdvancedDataGrid函数“setItemIcon”,但这似乎不起作用。

我在这个AdvancedDataGrid中有一些ColumnRenderers,它根据行数据在其他列中显示不同的图标,但我还没有找到一种方法来对主树列执行此操作。我猜它会类似于使用ColumnRenderer,但可能使用像GroupItemRenderer这样的东西。

1 个答案:

答案 0 :(得分:2)

这应该可以通过这样的groupIconFunction来实现:

<mx:AdvancedDataGrid groupIconFunction="getGroupIcon">
   <mx:columns>
       <mx:AdvancedDataGridColumn headerText="Name" dataField="name"/>
   </mx:columns>
</mx:AdvancedDataGrid>

<fx:Script>

[Embed(source='/assets/company.png')]
private static const COMPANY_ICON: Class;

[Embed(source='/assets/customer.png')]
private static const CUSTOMER_ICON: Class;

private function getGroupIcon(item:Object,depth:int):Class
{
    if (item is Company)
        return COMPANY_ICON;
    if (item is Customer)
        return CUSTOMER_ICON;
    // null = default icon
    return null;
}

</fx:Script>

Adob​​e的Flex在线参考中还有一个示例,演示如何use the groupIconFunction and groupLabelFunction properties