2009-02-26 13 views
1

Ich habe ein Advanced (ADG) mit einer HierarchicalData Datenprovider:Warum wird AdvancedDataGrid nicht aktualisiert, wenn der DataProvider HierarchicalData aktualisiert wird?

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

    __model.myHierarchicalData.source = parentItems; 
} 

parentItems a ist:

<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}"/> 

Wenn ich die HierarchicalData anfänglich weise im Modell wird erwartet angezeigt Sammlung von ParentItem valueObjects:

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

     public var label:String; 
    } 
} 

Allerdings whe n I Kind Elemente von einem Elternteil zum anderen zu bewegen (per Drag-and-Drop), das Update nicht sichtbar ist, mit diesem Code:

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

Aus irgendeinem Grund jedoch Dies funktioniert:

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

Warum muss ich die Quelle der ArrayCollection aktualisieren ???

+0

Versuchen Kinder Bindable machen. – dirkgently

+0

Es tut mir leid, es ist in meinem Code bindbar (siehe oben stehenden Fix). –

Antwort

1

Dank schlau für mich zur Antwort. Ich bin jetzt die Beseitigung der Notwendigkeit einer HierarchicalData Eigenschaft in meinem Modell, und stattdessen das hierarchische Datenprovider direkt im MXML-Einstellung:

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

Siehe this. Es wird empfohlen, immer eine bindbare ArrayCollection zu verwenden, wenn Sie mit dataProviders umgehen.

+0

Danke für den Link. Ich habe meine Antwort dort gefunden. –

+0

Eigentlich hat dies meinen Code schöner gemacht, aber mein Problem nicht gelöst. Die Klasse ist bindbar, aber der Datenprovider wird immer noch nicht korrekt aktualisiert, wenn ich die Quelle des Elements nicht aktualisiere. –

+0

Wünsche dir godspeed :) – dirkgently

0

Versuche

IHierarchicalCollectionView(__model.myHierarchicalData).refresh(); 
Verwandte Themen