Flex4树的操作

来源:互联网 发布:如何做好销售数据分析 编辑:程序博客网 时间:2024/05/16 09:16

源文件布局

     

 

源代码:

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>


 

运行效果图:

原创粉丝点击