0

親行と子行の列にデータを表示する階層グリッドが必要です。

- a parent | 1234 | data | data |
   a child | 2222 | data | data |
   a child |  212 | data | data |

ADGを機能させようとしましたが、デフォルトでは、親行のグループ化列を除くすべての列が空白になっています。アイテムレンダラーを使用してデータをプッシュできると思います。

私のブロッキングの問題は、私のグループ化がまったく機能していないように見えることです。dataProvider = MyArrayCollectionを設定するとデータが表示されますが、

<mx:GroupingCollection id="GroupingCollection" 
           source="{this.specificReportData.gridData}">
    <mx:Grouping label="childName">
        <mx:GroupingField name="parentName" />
    </mx:Grouping>
</mx:GroupingCollection>

動作しませ:データが表示されません。明示的な「子名」列を作成しようとしましたが、作成しませんでした。HierarchicalCollectionViewでラップしようとしましたが、それも機能しません。基本的なグループ化のチュートリアルを確認しましたが、コードとデータはパターンに従っているように見えます。

何か案は?

4

2 に答える 2

1

答えは、AdvancedDataGrid は、私が望むように構築されていないということです。

共通の値を持つデータをグループ化するのに優れています。実際の親要素が行自体として存在するデータをグループ化するのは得意ではありません。また、(独自のデータに基づいて) 親要素のみに適用される並べ替えとフィルター処理も必要です。表示されている親は子を表示でき、子はソートされません。

私の 2 段階の解決策は、最初にデータを反復処理し、親要素の配列を作成しchildrenて、子要素を保持する配列プロパティをそれらに追加することで、データを処理することです。これらは参照の配列であることに注意してください。実際のデータをコピーしていません。

次に、(おそらく ArrayCollection ラッパーを使用して) 親配列に任意の並べ替えとフィルター処理を適用し、親を反復処理して、表示されているもの (および親が とマークされている場合はその子expanded) を表示配列にコピーします。私のグリッドは、表示配列を単純な (たとえば、グループ化されていない) dataProvider として使用します。カスタム アイテム レンダラーは、子要素をインデントしexpanded、親要素のプロパティを変更して、表示配列を再生成します。

これは単純で直感的なソリューションであるだけでなく、読者やメンテナーが ADG の特異性を理解する必要もありません (私のモットー: No Clever Code)。

トーマス、試してくれてありがとう。回答としてマークしていませんが、返信に +1 を付けています。

乾杯

于 2010-01-22T21:57:29.423 に答える
1

親をデータソースに含めてはなりません。次のようなデータソースが必要です。

   a child | 2222 | data | data | parentid | parentname
   a child |  212 | data | data | parentid | parentname

groupingfield をparentidまたはparentnameに設定します。グループ化により、フラットなデータソースから階層が作成され、親が作成されます。

于 2010-01-21T07:33:26.640 に答える