2009-02-26 10 views
1

IはHierarchicalDataのdataProviderとするAdvancedDataGrid(ADG)を有している:私は、最初のモデルでHierarchicalDataインスタンスを設定すると、期待どおりHierarchicalData dataProviderが更新されたときにAdvancedDataGridが更新されないのはなぜですか?

<mx:AdvancedDataGrid xmlns:mx="http://www.adobe.com/2006/mxml" 
    dataProvider="{__model.myHierarchicalData}" 
    displayItemsExpanded="true" sortExpertMode="true" dropEnabled="true" 
    sortableColumns="false" draggableColumns="false" 
    resizableColumns="true" textAlign="left" defaultLeafIcon="{null}" 
    folderOpenIcon="{null}" folderClosedIcon="{null}"/> 

、それが表示されます

function buildHierarchicalData(parentItems:ArrayCollection):void 
{ 
    __model.myHierarchicalData = new HierarchicalData(); 

    __model.myHierarchicalData.source = parentItems; 
} 

parentItemsであります親アイテムの値オブジェクトの収集:

package 
{ 
    [Bindable] 
    public class ParentItem 
    { 
     public var children:ArrayCollection; 

     public var label:String; 
    } 
} 

ただし、wheしかし、この作業を行ういくつかの理由

function moveChildren(movedChildren:Array /* of ParentItem */):void 
{ 
    parentItem.children = new ArrayCollection(movedChildren); 
} 

:N Iは、更新は、このコードを使用して、表示されない(ドラッグアンドドロップを介して)別の親から子項目を移動

function moveChildren(movedChildren:Array /* of ParentItem */):void 
{ 
    parentItem.children.source = movedChildren; 
} 

なぜArrayCollectionのソースを更新する必要がありますか?

+0

を試してみてください。 – dirkgently

+0

申し訳ありませんが、私のコードにバインド可能です(上記の固定されたポスト参照)。 –

答えて

1

私は答えに向かってくれてありがとう。私は今、私のモデルでHierarchicalDataプロパティの必要性を排除し、代わりに右MXMLで階層のdataProviderを設定しています:

<mx:AdvancedDataGrid xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:dataProvider> 
     <mx:HierarchicalData source="{__model.parentItems}" /> 
    </mx:dataProvider> 
</mx:AdvancedDataGrid> 
1

thisを参照してください。 dataProvidersを扱う場合は常にバインド可能なArrayCollectionを使用することをお勧めします。

+0

リンクありがとうございます。そこに私の答えが見つかりました。 –

+0

実際、これは私のコードをより良くしましたが、私の問題を解決しませんでした。クラスはバインド可能ですが、アイテムのソースを更新しない限り、dataproviderはまだ正しく更新されません。 –

+0

あなたはgodspeedを願います:) – dirkgently

0

は、子供たちにバインド可能なを作ってみましょう

IHierarchicalCollectionView(__model.myHierarchicalData).refresh(); 
関連する問題