我正在維護一個較大的傳統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'仍然對重複項目感到困惑。 –