读书人

flex tree 节点的平添、删除

发布时间: 2012-10-27 10:42:26 作者: rapoo

flex tree 节点的添加、删除。
myXml.xml:

<?xml version="1.0" encoding="utf-8"?><novel label="单元">        <part label="第一单元">        <part label="第一单元例题一">            <part label="练习题一" ></part>            <part label="练习题二" ></part>        </part>        <part label="第一单元例题二">            <part label="练习题一" ></part>            <part label="练习题二" ></part>        </part>    </part>        <part label="第二单元">        <part label="第二单元例题一">            <part label="练习题一" ></part>            <part label="练习题二" ></part>        </part>    </part>    <part label="第三单元">    </part></novel>


[Bindable]public var selectedNode:XML;public var resultXML:XML;//初始化.public function preInit():void{var targetURL : String = "myXml.xml";var request : URLRequest = new URLRequest(targetURL);var variables : URLLoader = new URLLoader();variables.addEventListener(Event.COMPLETE, completeHandler);try{variables.load(request);}catch (error:Error){trace("无法加载" + error);}}private function completeHandler(event:Event):void{trace(event.target.data is String);selectedNode = new XML(event.target.data);myTree.dataProvider = selectedNode;}public function treeChanged(event:Event):void{selectedNode = Tree(event.target).selectedItem as XML;player.load();}//添加节点.protected function add_clickHandler(event:MouseEvent):void{var xml : XML = selectedNode..*.(@label == txtname.text)[0];if (xml){var xml1 : XML = new XML("<part label=\"" + txtname1.text + "\"></part>");xml.appendChild(xml1);}else{var array : Array = txtname.text.split("/");var asd : XML = selectedNode;for (var v:int=0; v < array.length; v++){var rr : XML = selectedNode..*.(@label == array[v])[0];if (rr){asd = rr;continue;}else{rr = new XML("<part label=\"" + array[v] + "\"></part>");asd.appendChild(rr);asd = rr;}}var firstNodeSon1 : XML = new XML("<part label=\"" + txtname1.text + "\"></part>");asd.appendChild(firstNodeSon1);}}//删除节点protected function del_clickHandler(event:MouseEvent):void{var array:Array=txtname.text.split("/");var xml:XML=selectedNode..*.(@label == array[array.length - 1].toString())[0];if (xml){delete xml..*.(@label == txtname1.text)[0];if (xml.part.length() == 0){    for(var v : int = array.length - 1; v >= 0; v --){        var rr : XML = selectedNode..*.(@label == array[v].toString())[0];    if(rr.part.length() == 0){        delete selectedNode..*.(@label == array[v].toString())[0];    }    }    delete selectedNode..*.(@label == array[array.length - 1].toString())[0];}}}<mx:Tree id="myTree"          width="20%"          height="100%"          labelField="@label"          dataProvider="{selectedNode}"          showRoot="false" change="treeChanged(event)"         alpha="0.5"/><s:TextInput id="txtname" text=""/><s:TextInput id="txtname1" text=""/><s:Button label="添加" click="add_clickHandler(event)"/><s:Button label="删除" click="del_clickHandler(event)"/>

添加如下图所示:

删除也可以向上图那样输入, 第二个输入框的值的父级节点或父级的父级等等没子节点时, 会把父级以及以上没有子节点的父级一起删除, 否则不会删除有子节点的父级。

读书人网 >flex

热点推荐