我正在维护一个较大的传统Flex 4.6项目,该项目拒绝死亡,并且遇到了Mx Tree
组件,我无法解决该问题。要点是,将项目添加到现有节点展品奇怪的行为,如果项目是重复的。如果节点是使用唯一项目创建的,则该组件的行为与预期相同。将重复项添加到现有节点时Mx树失败
例如,下图显示了将文件“AAAAA.png”多次添加到现有节点的结果。突出显示是疯狂的,组件似乎对它有多少项目感到困惑(已经测试过)。
我试过重新设置数据提供程序等的“刷新树”破解(下图),我在各种支持Array Collections
上调用刷新。我开始走下去,用一个Spark Tree
代替Mx Tree
,这是一个人想出来的,但它变成了太多的时间。
在我告诉客户放弃这个功能之前,有没有人想过这个问题可能是什么?我比Flex开发人员更喜欢Actionscript,除了使用它们之外,我不了解组件的方式。
protected function vfAddToBtn_clickHandler(event:MouseEvent):void
{
if (virtualFoldersList.selectedItem == null){
Alert.show("Please select a virtual folder to add to", "Add to Virtual Folder", Alert.OK);
} else {
if (briefcaseData.currentSelectionsList.length > 0){
var vf:VirtualFolder = virtualFoldersList.selectedItem as VirtualFolder;
if (vf != null){
vf.children.addAll(briefcaseData.currentSelectionsList);
vf.children.refresh();
briefcaseData.virtualFoldersArray.refresh();
refreshTree(virtualFoldersList);
} else {
trace("ERROR: vfAddToBtn_clickHandler vf is null");
}
}
}
}
private function refreshTree(tree:Tree) : void
{
var selectedIndex : int = tree.selectedIndex;
var openItems : Object = tree.openItems;
tree.dataProvider = tree.dataProvider;
tree.openItems = openItems;
tree.validateNow();
tree.selectedIndex = selectedIndex;
}
这是一个'ArrayCollection' –
然后使用该行vf.children.addAll(新的ArrayCollection(briefcaseData.currentSelectionsList)) – Sumit
谢谢 - 我只是想,一个更(创建一个新的'的ArrayCollection '我想合并的'ArrayCollections'的来源),而'Mx Tree'仍然对重复项目感到困惑。 –