0

我有一个以分层方式显示信息的 AdvancedDataGrid;站点及其相关子区域的列表。

数据结构为:

public interface ISite
{
    function get displayName():String
    function get siteCode():String
    function get name():String
    function get subAreas():ArrayCollection
}

public interface ISubArea
{
    function get displayName():String
    function get siteCode():String
    function get name():String
    function get subAreaCode():String
}

我想在网格中显示总共三条信息。在树的根部,我想显示站点的 displayName。对于子区域,我想显示两列,一列用于站点代码,另一列用于名称。

不幸的是,我已经非常接近所有三列都显示在子行中。我还没有弄清楚如何从子行中删除站点的 displayName 列。

关于如何做到这一点的任何想法?这是一个屏幕截图,描述了迄今为止的结果并用所需的结果进行了注释。生成此结果的 MXML 代码可以在图像之后找到。

在此处输入图像描述

<mx:AdvancedDataGrid width="100%" height="100%" showHeaders="false" textAlign="left">
    <mx:dataProvider>
        <mx:HierarchicalData source="{pmodel.sites}" childrenField="subAreas"/>
    </mx:dataProvider>
    <mx:columns>
        <mx:AdvancedDataGridColumn dataField="displayName"/>
        <mx:AdvancedDataGridColumn dataField="siteCode"/>
        <mx:AdvancedDataGridColumn dataField="name"/>
    </mx:columns>
    <mx:rendererProviders>
        <mx:AdvancedDataGridRendererProvider 
            depth="1" 
            columnIndex="0" 
            columnSpan="0" 
            renderer="mx.controls.advancedDataGridClasses.AdvancedDataGridGroupItemRenderer"/>
    </mx:rendererProviders> 
</mx:AdvancedDataGrid>
4

1 回答 1

2

我找到了一个非常简单且可行的解决方案来解决这个问题。

将第一列 (displayName) 的宽度设置为零以在数据网格中“隐藏”该列。使用AdvancedDataGridRendererProvider配置该列以跨越数据网格根部的所有列。由于跨越多列,第一列的文本仍将显示在根部,并将隐藏在数据网格中的所有其他深度。

<mx:AdvancedDataGrid width="100%" height="100%" showHeaders="false" textAlign="left">
    <mx:dataProvider>
        <mx:HierarchicalData source="{pmodel.sites}" childrenField="subAreas"/>
    </mx:dataProvider>
    <mx:columns>
        <mx:AdvancedDataGridColumn dataField="displayName" width="0"/>
        <mx:AdvancedDataGridColumn dataField="siteCode"/>
        <mx:AdvancedDataGridColumn dataField="name"/>
    </mx:columns>
    <mx:rendererProviders>
        <mx:AdvancedDataGridRendererProvider 
            depth="1" 
            columnIndex="0" 
            columnSpan="0" 
            renderer="mx.controls.advancedDataGridClasses.AdvancedDataGridGroupItemRenderer"/>
    </mx:rendererProviders> 
</mx:AdvancedDataGrid>
于 2012-07-05T15:48:49.800 回答