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
}

グリッド内に表示したい情報は合計 3 つです。ツリーのルートで、サイトの displayName を表示したいと考えています。サブエリアの場合、2 つの列を表示したいと思います。1 つは siteCode 用で、もう 1 つは名前用です。

残念ながら、3つの列すべてが子行に表示されています。子行からサイトの 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 に答える