私は少し面白いものに遭遇し、投稿する価値があると思いました:
階層データを使用して実行時にデータプロバイダーを設定する必要がある場合は、AdvancedDataGridを使用しています。アドビのドキュメントは、この種のことを実際にはカバーしていません(少なくとも私が掘り下げることができるレベルでは)。
誰かがこれに遭遇したことがありますか?
私が思いついた唯一のことは少しハックで、高度なグリッドの開示アイコンでいくつかの奇妙な動作を導入しているようです。以下にテストケースを含めました。
AdvancedDataGridProblem.as:
import mx.collections.ArrayCollection;
public var dataProvider:ArrayCollection = new ArrayCollection([{label:"item1"},
{label:"item2", children:[{label:"subItem1"},{label:"subItem2"},
{label:"subItem3"}]},
{label:"item3"}]);
public function init():void{
//using callLater to ensure that the grid has been created before setting DP
this.callLater(setDataProvider,[dataProvider]);
}
public function setDataProvider(list:ArrayCollection):void{
heirData.source = list;
}
およびmxml:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script source="advancedDataGridProblem.as"/>
<mx:AdvancedDataGrid id="advDG" width="100%">
<mx:columns>
<mx:AdvancedDataGridColumn headerText="What the heck?"/>
<mx:AdvancedDataGridColumn headerText="Label" dataField="label"/>
<mx:AdvancedDataGridColumn headerText="Column 2"/>
<mx:AdvancedDataGridColumn headerText="Column 3"/>
</mx:columns>
<mx:dataProvider>
<mx:HierarchicalData id="heirData"/>
</mx:dataProvider>
</mx:AdvancedDataGrid>
</mx:Application>
テストアプリケーションを実行するとわかるように、[ラベル]列に表示されるはずのアイコンは、実際には「一体何ですか?」に配置されます。桁。[ラベル]列をドラッグして、「一体何ですか?」と交換しようとすると、列では、アイコンは元の場所に残りますが、奇跡的に、以前は[ラベル]列用に整列されたままになっていたラベルが、アイコン用に適切にフォーマットされるようになりました。ラベル列をスロット1からドラッグすると、グリッドが元の状態に戻ります。
これは私の頭の少し上にあります-誰か提案がありますか?
理想的には、このハックをすべて一緒に回避し、実行時に通常どおりdataProviderを割り当てるだけです。
前もって感謝します!
これについては、まもなくadobeにバグレポートを提出し、コメントにリンクを挿入します。