Apache flex Flex 4 Mx:树不使用tree.refresh()或tree.reset()更新

Apache flex Flex 4 Mx:树不使用tree.refresh()或tree.reset()更新,apache-flex,tree,Apache Flex,Tree,我用Flex 4创建了一个mx:tree,树中填充了一个XMLList文件,该文件从数据库中更新,我试图完成的是刷新树,以便根据课程的完成状态显示不同的图标 问题是树没有被更新,但是XMLList文件被更新了,所以我非常感谢您的帮助 顺便说一下,我不知道Flex 代码如下: public static var treeData:XMLList = new XMLList(MyString); <mx:Tree id="myTree" width="40%" height="100%" l

我用Flex 4创建了一个
mx:tree
,树中填充了一个
XMLList
文件,该文件从数据库中更新,我试图完成的是刷新树,以便根据课程的完成状态显示不同的图标

问题是树没有被更新,但是
XMLList
文件被更新了,所以我非常感谢您的帮助

顺便说一下,我不知道Flex

代码如下:

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(selectedNode.@lesson)), habilitar()"
                         alternatingItemColors="{myAlternatingRowColors}"

                         />



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

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

                        myTree.validateNow();
                    }
                }
publicstaticvar-treeData:XMLList=newxmllist(MyString);
公共函数renderTree():void{
跟踪(“Entróa renderTree”);
initAppB();
如果(刷新数据){
myTree.invalidateList();
刷新数据=假;
myTree.openItems=Globals.treeData;
myTree.validateNow();
}
}

相反,您可以使用bindable集合,如
ArrayCollection
。 使用它,您不需要手动使树无效。当
ArrayCollection
更改时,它将自动更新

另外,我不确定您所说的“树中填充了一个XMLList文件,该文件是从数据库更新的”是什么意思。你能澄清一下吗

要更新树,必须更新
treeData:xmlslist
。如果要将其替换为另一个值,请尝试以下操作:

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