Question

I ai un AdvancedDataGrid (ADG) avec une HierarchicalData dataProvider:

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

Quand je mets d'abord l'instance HierarchicalData dans le modèle, il est affiché comme prévu:

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

    __model.myHierarchicalData.source = parentItems;
}

parentItems est une collection de ParentItem valueObjects:

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

        public var label:String;
    }
}

Cependant, quand je déplace les éléments enfants d'un parent à l'autre (par glisser-déposer), la mise à jour ne soit pas visible, en utilisant ce code:

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

Pour une raison quelconque, cependant, ce FONCTIONNE:

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

Pourquoi dois-je mettre à jour la source du ArrayCollection ???

Était-ce utile?

La solution

Merci à dirkgently pour me diriger vers la réponse. J'éliminais maintenant la nécessité d'une propriété HierarchicalData dans mon modèle, et la mise en place du droit dataProvider hiérarchique dans le MXML:

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

Autres conseils

Voir cette . Il est recommandé d'utiliser un ArrayCollection bindable toujours en traitant avec dataProviders.

Essayez

IHierarchicalCollectionView(__model.myHierarchicalData).refresh();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top