Flex4树的操作
发布时间:2020-12-15 01:10:43 所属栏目:百科 来源:网络整理
导读:源文件布局 ????? ? 源代码: 1、treeData.xml ???? ?xml version="1.0" encoding="UTF-8"?tree id="01" name="GJ" value="国家" data id="0101" name="ZG" value="中国" data id="010101" name="BJ" value="北京"/data /data data id="0102" name="MG" valu
源文件布局 ????? ? 源代码: 1、treeData.xml ???? <?xml version="1.0" encoding="UTF-8"?> <tree id="01" name="GJ" value="国家"> <data id="0101" name="ZG" value="中国"> <data id="010101" name="BJ" value="北京"></data> </data> <data id="0102" name="MG" value="美国"> <data id="010201" name="NY" value="纽约"></data> </data> </tree> 2、demo_tree.mxml <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" creationComplete="application1_creationCompleteHandler(event)" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <s:layout> <s:VerticalLayout verticalAlign="middle" horizontalAlign="center"/> </s:layout> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.CloseEvent; import mx.events.FlexEvent; import mx.rpc.events.ResultEvent; [Bindable] private var d:XML; [Bindable] private var dataGrid:ArrayCollection = new ArrayCollection(); //网格数据 /*启动*/ protected function application1_creationCompleteHandler(event:FlexEvent):void { hs.send();//调用HttpService加载XML树 } /*加载树回归事件*/ private function treeLoad(event:ResultEvent):void { d = event.result as XML; t.dataProvider = d; //给网格加入数据 for each(var xml:XML in event.result..data) { var o:Object = new Object(); o.id = xml.@id; o.name = xml.@name; o.value = xml.@value; dataGrid.addItem(o); } } /*添加树结点操作*/ private function addNode(event:MouseEvent):void { if(t.selectedIndex == -1) { Alert.show("请选择一个父结点","提示信息"); } else { var newNode:XML = <node/>; newNode.@value = nodeText.text; var node:XML = XML(t.selectedItem); if(node.@isBranch == true) { node.parent().appendChild(newNode); } else { node.appendChild(newNode); } nodeText.text = ""; Alert.show("添加结点成功!", "提示信息"); } } /*删除树的结点操作*/ private function delNode(event:MouseEvent):void { if(t.selectedIndex == -1) { Alert.show("请选择一个需要删除的结点","提示信息"); } else { Alert.show("你确定要删除该结点吗?","提示信息",1|2,this,delHandler); } } /*删除树结点确认操作*/ private function delHandler(event:CloseEvent):void { if(event.detail == Alert.YES) { var node:XML = XML(t.selectedItem); var nodeList:XMLList = XMLList(node.parent()).children(); for(var i:int = 0; i < nodeList.length(); i++) { if(nodeList[i].@value == node.@value && (nodeList[i].@isBranch = true)) { delete nodeList[i]; } } Alert.show("删除结点成功!","提示信息"); } } /*将ArrayCollection转换成XML*/ private function arrToXML(event:MouseEvent):void { var root:XML = <root/>; for(var i:int = 0; i < dataGrid.length; i++) { var node:XML = new XML(<node/>); node.id = dataGrid[i].id; node.name = dataGrid[i].name; node.value = dataGrid[i].value; root.appendChild(node); } Alert.show(root.toXMLString()); } /*将XML转换成ArrayCollection*/ private function XMLToArr(event:MouseEvent):void { dataGrid.removeAll(); hs.send(); } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <s:HTTPService id="hs" url="data/treeData.xml" resultFormat="e4x" result="treeLoad(event)"/> </fx:Declarations> <mx:DataGrid height="186" id="dg" dataProvider="{dataGrid}"> <mx:columns> <mx:DataGridColumn headerText="编号" dataField="id"/> <mx:DataGridColumn headerText="名称" dataField="name"/> <mx:DataGridColumn headerText="值" dataField="value"/> </mx:columns> </mx:DataGrid> <mx:Tree id="t" width="322" height="224" labelField="@value"></mx:Tree> <s:HGroup width="530" height="57"> <s:TextInput id="nodeText"/> <s:Button label="增加" click="addNode(event)" enabled="{nodeText.text.replace(/^s*|s*$/g,'').split(' ').join('')==''?false:true}"/> <s:Button label="删除" click="delNode(event)" enabled="{t.selectedIndex==-1?false:true}"/> <s:Button label="将XML转换成AC" click="XMLToArr(event);"/> <s:Button label="将AC转换成XML" click="arrToXML(event);"/> </s:HGroup> </s:Application>
运行效果图: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |