2016-03-30 16 views
0

Ich erstelle ein mx:tree mit Flex 4 und der Baum wird mit einer XMLList Datei gefüllt, die Datei wird von einer Datenbank aktualisiert und Was ich versuche, ist, den Baum zu aktualisieren, so dass ein anderes Symbol angezeigt wird, abhängig vom Status des Abschlusses eines Kurses.Flex 4 Mx: Baum nicht mit tree.refresh() oder tree.reset() aktualisieren

Das Problem ist, dass der Baum nicht aktualisiert wird, aber die XMLList Datei ist, so würde ich wirklich etwas Hilfe zu schätzen wissen.

Übrigens, ich weiß nicht über Flex.

Hier ist der Code:

public static var treeData:XMLList = new XMLList(MyString); 

<mx:Tree id="myTree" width="40%" height="100%" labelField="@label" fontSize="14" focusColor="#ff5003" 
        render="renderTree()" 
        iconFunction="tree_iconFunc" 
        showRoot="false" 
        dataProvider="{treeData}" 
         change="treeChanged(event)" 
         depthColors="{myDepthColors}" 
         color="#006596" borderColor="#03B4EC" 
         click="SoundExample(String([email protected])), habilitar()" 
         alternatingItemColors="{myAlternatingRowColors}" 

         /> 



    public function renderTree():void { 
        trace("Entró a renderTree"); 
        initAppB(); 
        if (refreshData){ 

         myTree.invalidateList(); 
         refreshData = false; 
         myTree.openItems = Globals.treeData; 

         myTree.validateNow(); 
        } 
       } 

Antwort

0

Statt XMLList Sie bindable Sammlung wie ArrayCollection nutzen könnten. Damit müssen Sie Baum nicht manuell ungültig machen. Es wird automatisch aktualisiert, wenn sich ArrayCollection ändert.

Auch ich bin nicht sicher, was meinst du mit „der Baum mit einem XMLList-Datei gefüllt wird, wird die Datei aus einer Datenbank aktualisiert wird“. Könnten Sie das klären?

Um einen Baum zu aktualisieren, müssen Sie treeData:XMLList aktualisieren. Wenn Sie einen anderen Wert, den es ersetzen wollen versuchen Sie folgendes:

[Bindable] //Notice this metadata 
public var treeData:XMLList = new XMLList(MyString); 
public function updateTreeData():void { 
    var text:String = ...; //loading text 
    treeData = new XMLList(text); 
}