拙风

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

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);
      }
     }

posted on 2010-11-18 17:36  拙风  阅读(97)  评论(0)    收藏  举报