Warum ist eine Aktualisierung Advanced nicht, wenn der HierarchicalData Datenprovider aktualisiert wird?
-
09-09-2019 - |
Frage
Ich habe ein Advanced (ADG) mit einem HierarchicalData Datenprovider:
<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}"/>
Als ich anfangs die HierarchicalData Instanz im Modell festgelegt, es wird angezeigt, wie erwartet:
function buildHierarchicalData(parentItems:ArrayCollection):void
{
__model.myHierarchicalData = new HierarchicalData();
__model.myHierarchicalData.source = parentItems;
}
parentItems ist eine Sammlung von ParentItem valueobjects:
package
{
[Bindable]
public class ParentItem
{
public var children:ArrayCollection;
public var label:String;
}
}
Allerdings, wenn ich untergeordneten Elemente von einem Elternteil zum anderen (per Drag-and-Drop) bewegen, 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 ???
Lösung
Dank dirkgently für mich auf die Antwort zu lenken. Ich bin jetzt die Notwendigkeit einer HierarchicalData Eigenschaft in meinem Modell zu beseitigen und stattdessen die hierarchischen 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>
Andere Tipps
Siehe dieses . Es wird empfohlen, immer ein bindungsfähigen ArrayCollection
zu verwenden, wenn mit dataProviders
handelt.
Versuchen
IHierarchicalCollectionView(__model.myHierarchicalData).refresh();