我有一個帶節點的樹和一個刪除按鈕,第一個用戶選擇節點並點擊這個刪除按鈕,我想從樹中刪除這個節點,它不是XML,樹中的每個節點都是對象類型 從flex Tree組件刪除Object類型的節點?
我試圖delete myTree.selectedItem
(但編譯器不會讓我這樣做) 還試圖myTree.selectedItem = nul
L(剛取消選擇的項目) ,也是我如何可以訪問參考myTree.selectedItem的父對象?
我有一個帶節點的樹和一個刪除按鈕,第一個用戶選擇節點並點擊這個刪除按鈕,我想從樹中刪除這個節點,它不是XML,樹中的每個節點都是對象類型 從flex Tree組件刪除Object類型的節點?
我試圖delete myTree.selectedItem
(但編譯器不會讓我這樣做) 還試圖myTree.selectedItem = nul
L(剛取消選擇的項目) ,也是我如何可以訪問參考myTree.selectedItem的父對象?
以下是使用dataDescriptor移除葉節點與MX Tree的方法。
var parent:Object = tree.getParentItem(tree.selectedItem);
var p:int = tree.itemRendererToIndex(tree.itemToItemRenderer(parent))
var i:int = tree.itemRendererToIndex(tree.itemToItemRenderer(tree.selectedItem))
tree.dataDescriptor.removeChildAt(parent,tree.selectedItem,i - p - 1);
您可以使用此爲您去除功能:
private function removeEmployee():void {
var node:XML = XML(tree.selectedItem);
if(node == null) return;
var children:XMLList = XMLList(node.parent()).children();
for(var i:Number=0; i < children.length(); i++) {
if(children[i][email protected] == [email protected]) {
delete children[i];
}
}
}
鑄造對象爲xml不會工作(在我的例子中,selectedItem是Object類型的) – 2011-02-13 08:59:56
如果沒有這將是十分困難的父節點引用。我會建議創建一個TreeNode類,而不是一個香草對象。除了「label」和「children」屬性外,當爲樹創建模型時,給節點一個「父」屬性並設置父項。
然後,當你選擇和項目,然後點擊刪除按鈕,你可以得到所選節點的父節點,並調用一個「removeChild」等等。這應該刪除給定的孩子節點。
這可能是因爲您需要在刪除節點後使樹的模型無效。您可以這樣做:
myTree.invalidateList();
我理解第一部分,但不是第二部分,我們需要removeChild爲什麼?而不是對dataprovider進行更改? – 2011-02-13 09:04:47
var item:* = tree.selectedItem;
var parent:* = tree.getParentItem(item);
var p:int = tree.getItemIndex(parent);
var i:int = tree.getItemIndex(item);
var index:int = i - p - 1;
tree.dataDescriptor.removeChildAt(parent, item, index);
Almoust相同,但它爲我好。
請問您可以添加一個代碼示例嗎? – www0z0k 2011-02-11 23:13:48