我有一个带节点的树和一个删除按钮,第一个用户选择节点并点击这个删除按钮,我想从树中删除这个节点,它不是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