XML做为数据源的Tree操作进一步学习
parent.insertChildAfter(xml,child);
用法解释
XML.insertChildAfter(child1:*, child2:*):*
- 在该 XML 对象的
child1参数后插入给定的child2参数并返回生成的对象。如果child1参数为null,则该方法将在 XML 对象的所有子项之前 插入child2的内容(也就是说,不 在任何子项之后)。如果提供child1,但 XML 对象中不包含该参数,则不修改该 XML 对象并返回undefined。如果对不是元素(文本、属性、注释、pi 等等)的 XML 子项调用该方法,则返回
undefined。例子:(在Tree中实现在某一项上面插入一个新项)
protected function addAfter():void
{
var xml:XML=MusicTypeTree.selectedItem as XML;
var text:String=nextName.text;
if(xml!=null && text.length>0) {
var parent:XML=xml.parent();
if(parent!=null) {
var child:XML=new XML("<node foddersortName=\"\" foddersortId=\"\" parentid=\"\" />");
child.@foddersortName=text;
parent.insertChildAfter(xml,child);
} else {
Alert.show("不能选中根节点");
}
} else {
Alert.show("需要先选中节点和填入文字");
}
}-----------------------------------------------------------------------------------------------------------------------------------------
parent.insertChildAfter(xml,child);
用法解释
XML.insertChildAfter(child1:*, child2:*):*
-
在该 XML 对象的 child1 参数后插入给定的 child2 参数并返回生成的对象。如果 child1 参数为 null,则该方法将在 XML 对象的所有子项之前 插入 child2 的内容(也就是说,不 在任何子项之后)。如果提供 child1,但 XML 对象中不包含该参数,则不修改该 XML 对象并返回 undefined。
-
如果对不是元素(文本、属性、注释、pi 等等)的 XML 子项调用该方法,则返回 undefined。
-
例子:(在Tree中实现在某一项下面插入一个新项)
protected function addAfter():void
{
var xml:XML=MusicTypeTree.selectedItem as XML;
var text:String=nextName.text;
if(xml!=null && text.length>0) {
var parent:XML=xml.parent();
if(parent!=null) {
var child:XML=new XML("<node foddersortName=\"\" foddersortId=\"\" parentid=\"\" />");
child.@foddersortName=text;
parent.insertChildAfter(xml,child);
} else {
Alert.show("不能选中根节点");
}
} else {
Alert.show("需要先选中节点和填入文字");
}
}-----------------------------------------------------------------------------------------------------------------------------------------
XML.appendChild(child:*):XML将给定子项追加到该 XML 对象属性的末尾。appendChild() 方法可采用 XML 对象、XMLList 对象或随后转换为 String 的任何其它数据类型。
例子:()
如果我先声明一个XML为
var xml:XML = <data/>
接下来:
var child:XML=new XML("<node foddersortName=\"\" foddersortId=\"\" parentid=\"\" />");
child.@foddersortName="我新来的";
xml.appendChild(child);这样操作后可以得到:
<data>
<node foddersortName="我新来的" foddersortId="" parentid=""/>
</data>在Tree中为某一项增加一个子项
protected function addSon():void
{
var xml:XML=MusicTypeTree.selectedItem as XML;
var text:String=nextName.text;
if(xml!=null && text.length>0) {
var parent:XML=xml.parent();
var child:XML=new XML("<node foddersortName=\"\" foddersortId=\"\" parentid=\"\" />");
child.@foddersortName=text;
xml.appendChild(child);
MusicTypeTree.expandChildrenOf(xml,true);
} else {
Alert.show("需要先选中节点和填入文字");
}
}-----------------------------------------------------------------------------------------------------------------------------------------
xml.appendChild(child);在Tree中选中某个节点,然后进行修改
protected function editNode():void
{
var xml:XML=MusicTypeTree.selectedItem as XML;
var text:String=nextName.text;
if(xml!=null && text.length>0) {
xml.@foddersortName=text;
} else {
Alert.show("需要先选中节点和填入文字");
}
}
这里xml.@foddersortName中的foddersortName为XML结构中设好的做为名字的属性
----------------------------------------------------------------------------------------------------------------------------------------
protected function deleteNode():void
{
var xml:XML=MusicTypeTree.selectedItem as XML;
if(xml!=null) {
var list:Array=MusicTypeTree.selectedItems as Array;
for(var k:int=0;k<list.length;k++) {
xml=list[k] as XML;
var parent:XML=xml.parent();
if(parent!=null) {
var children:XMLList=parent.children();
for(var i:int=0;i<children.length();i++) {
if(children[i]==xml) {
delete children[i];
break;
}
}
} else {
Alert.show("不能选中根节点");
}
}
} else {
Alert.show("需要先选中节点");
}
}
----------------------------------------------------------------------------------------------------------------------------------------
xmlBound2Tree.dataDescriptor.addChildAt(dataX, newNode, 2, dataX);Tree中删除某个节点
解释
mx.controls.treeClasses.ITreeDataDescriptor.addChildAt(parent:Object, newChild:Object, index:int, model:Object=null):Boolean
在指定索引处向节点添加子节点。
参数:
parent 将成为子节点父级的节点对象。
newChild 节点将成为其父级的节点对象。
index 放置子节点的从零开始的索引。
model 包含此节点的整个集合。
例子:(可以在下面增加子级)
[Bindable]
private var dataX:XML =
<item label="Top">
<item label="Child One"/>
<item label="Child Two" />
</item>;
private function addEmptyBranchDD():void {
var newNode:XML = <item label='Child 4' isBranch="true"></item>;
xmlBound2Tree.dataDescriptor.addChildAt(dataX, newNode, 2, dataX);
}
下面这个不一样哦,可的增加同级的
private function addEmptyBranchDP():void {
var newNode:XML = <item label='Middle' isBranch="true"></item>;
xmlBound2Tree.dataProvider.addItemAt(newNode, 1);
//这个是直接在末尾加,可是经过测试,dataX并没有改变
}
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
private function onDragDrop( event:DragEvent ) : void {
var ds:DragSource = event.dragSource;
var dropTarget:Tree = Tree(event.currentTarget);
var items:Array = ds.dataForFormat("items") as Array;
var r:int = tree.calculateDropIndex(event);
tree.selectedIndex = r;
var node:XML = tree.selectedItem as XML;
var p:*;
/* If the selected node has children (it is type==city),
then add the items at the beginning. */
if ( tree.dataDescriptor.hasChildren(node) ) {
p = node;
r = 0;
} else {
p = node.parent();
}
for (var i:Number=0; i < items.length; i++) {
var insert:XML = <node />;
insert.@label = items[i];
insert.@type = "restaurant";
tree.dataDescriptor.addChildAt(p, insert, r+i);
}
}

浙公网安备 33010602011771号