我有一个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。对于SubArea'S我想显示两列,一列用于siteCode,另一列用于名称。
我已经非常接近,遗憾的是,所有三列都显示在子行中。我还没想出如何从子行中删除Site的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>
答案 0 :(得分:2)
我发现了一个非常简单且可行的解决方案。
将第一列(displayName)的宽度设置为零为&#34;隐藏&#34;数据网格中的那一列。使用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>