Flex Tree 操作備忘
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="doInit()" fontSize="15">
<mx:HDividedBox right="5" left="5" bottom="5" top="114">
<mx:TextArea height="100%" width="100%" wordWrap="false" id="textarea"><mx:text><![CDATA[<node label="菜單">
<node label="瑰姿艷逸"/>
<node label="氣若幽蘭"/>
<node label="華容婀娜"/>
<node label="翩若驚鴻"/>
<node label="其他">
<node label="婉若游龍"/>
<node label="榮曜秋菊"/>
<node label="華茂春松">
<node label="明眸善睞"/>
<node label="腰如約素"/>
<node label="瑰姿艷逸"/>
</node>
</node>
</node>]]></mx:text></mx:TextArea>
<mx:Tree width="100%" height="100%" labelField="@label" id="tree" change="onChange()" allowMultipleSelection="true"></mx:Tree>
</mx:HDividedBox>
<mx:Button x="10" y="10" label="設置Tree的Model" click="refresh1()"/>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.utils.setTimeout;
import mx.collections.*;
private function onChange():void {
if(tree.selectedItem!=null) {
var xml:XML=tree.selectedItem as XML;
addText.text=xml.@label;
}
}
private function doInit():void {
refresh1();
}
private function refresh1():void {
var list:XMLList=null;
try {
list=new XMLList(textarea.text);
} catch (e:Error) {
Alert.show("xml模型非法");
}
if(list!=null) {
tree.dataProvider=list;
tree.validateNow();
setTimeout(expandAll,100);
}
}
private function expandAll():void {
tree.selectedIndex=0;
//trace(tree.selectedIndex);
if(tree.selectedItem!=null) {
//trace(tree.selectedItem);
tree.expandChildrenOf(tree.selectedItem,true);
}
}
private function addAfter():void {
var xml:XML=tree.selectedItem as XML;
var text:String=addText.text;
if(xml!=null && text.length>0) {
var parent:XML=xml.parent();
if(parent!=null) {
var child:XML=new XML("<node label=\"\"/>");
child.@label=text;
parent.insertChildAfter(xml,child);
} else {
Alert.show("不能選中根節點");
}
} else {
Alert.show("需要先選中節點和填入文字");
}
}
private function addBefore():void {
var xml:XML=tree.selectedItem as XML;
var text:String=addText.text;
if(xml!=null && text.length>0) {
var parent:XML=xml.parent();
if(parent!=null) {
var child:XML=new XML("<node label=\"\"/>");
child.@label=text;
parent.insertChildBefore(xml,child);
} else {
Alert.show("不能選中根節點");
}
} else {
Alert.show("需要先選中節點和填入文字");
}
}
private function addSub():void {
var xml:XML=tree.selectedItem as XML;
var text:String=addText.text;
if(xml!=null && text.length>0) {
var child:XML=new XML("<node label=\"\"/>");
child.@label=text;
xml.appendChild(child);
tree.expandChildrenOf(xml,true);
} else {
Alert.show("需要先選中節點和填入文字");
}
}
private function delSel():void {
var xml:XML=tree.selectedItem as XML;
if(xml!=null) {
var list:Array=tree.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("需要先選中節點");
}
}
private function modifyLabel():void {
var xml:XML=tree.selectedItem as XML;
var text:String=addText.text;
if(xml!=null && text.length>0) {
xml.@label=text;
} else {
Alert.show("需要先選中節點");
}
}
private function selAll():void {
var text:String=searchText.text;
if(text.length>0) {
var items:Array=[];
var list:XMLList=new XMLList();
list[0]=tree.dataProvider[0];
searchItems(list,text,items);
tree.selectedItems=items;
} else {
Alert.show("輸入查找的文字");
}
}
private function searchItems(list:XMLList,find:String,items:Array):void {
for(var i:int=0;i<list.length();i++) {
var one:XML=list[i];
var label:String=one.@label;
if(label!=null && label.indexOf(find)>=0) {
items.push(one);
}
searchItems(one.children(),find,items);
}
}
]]>
</mx:Script>
<mx:Label x="10" y="46" text="增加節點:"/>
<mx:TextInput x="90" y="44" width="127" id="addText"/>
<mx:Button x="225" y="44" label="增加為弟" click="addAfter()"/>
<mx:Button x="323" y="44" label="增加為哥" click="addBefore()"/>
<mx:Button x="421" y="44" label="增加為孩子" click="addSub()"/>
<mx:Button x="193" y="10" label="刪除選中節點" click="delSel()"/>
<mx:Button x="563" y="44" label="修改標簽" click="modifyLabel()"/>
<mx:TextInput x="124" y="76" width="127" id="searchText" text="華"/>
<mx:Text x="259" y="78" text="的節點"/>
<mx:Button x="10" y="76" label="選中包含:" click="selAll()"/>
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="doInit()" fontSize="15">
<mx:HDividedBox right="5" left="5" bottom="5" top="114">
<mx:TextArea height="100%" width="100%" wordWrap="false" id="textarea"><mx:text><![CDATA[<node label="菜單">
<node label="瑰姿艷逸"/>
<node label="氣若幽蘭"/>
<node label="華容婀娜"/>
<node label="翩若驚鴻"/>
<node label="其他">
<node label="婉若游龍"/>
<node label="榮曜秋菊"/>
<node label="華茂春松">
<node label="明眸善睞"/>
<node label="腰如約素"/>
<node label="瑰姿艷逸"/>
</node>
</node>
</node>]]></mx:text></mx:TextArea>
<mx:Tree width="100%" height="100%" labelField="@label" id="tree" change="onChange()" allowMultipleSelection="true"></mx:Tree>
</mx:HDividedBox>
<mx:Button x="10" y="10" label="設置Tree的Model" click="refresh1()"/>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.utils.setTimeout;
import mx.collections.*;
private function onChange():void {
if(tree.selectedItem!=null) {
var xml:XML=tree.selectedItem as XML;
addText.text=xml.@label;
}
}
private function doInit():void {
refresh1();
}
private function refresh1():void {
var list:XMLList=null;
try {
list=new XMLList(textarea.text);
} catch (e:Error) {
Alert.show("xml模型非法");
}
if(list!=null) {
tree.dataProvider=list;
tree.validateNow();
setTimeout(expandAll,100);
}
}
private function expandAll():void {
tree.selectedIndex=0;
//trace(tree.selectedIndex);
if(tree.selectedItem!=null) {
//trace(tree.selectedItem);
tree.expandChildrenOf(tree.selectedItem,true);
}
}
private function addAfter():void {
var xml:XML=tree.selectedItem as XML;
var text:String=addText.text;
if(xml!=null && text.length>0) {
var parent:XML=xml.parent();
if(parent!=null) {
var child:XML=new XML("<node label=\"\"/>");
child.@label=text;
parent.insertChildAfter(xml,child);
} else {
Alert.show("不能選中根節點");
}
} else {
Alert.show("需要先選中節點和填入文字");
}
}
private function addBefore():void {
var xml:XML=tree.selectedItem as XML;
var text:String=addText.text;
if(xml!=null && text.length>0) {
var parent:XML=xml.parent();
if(parent!=null) {
var child:XML=new XML("<node label=\"\"/>");
child.@label=text;
parent.insertChildBefore(xml,child);
} else {
Alert.show("不能選中根節點");
}
} else {
Alert.show("需要先選中節點和填入文字");
}
}
private function addSub():void {
var xml:XML=tree.selectedItem as XML;
var text:String=addText.text;
if(xml!=null && text.length>0) {
var child:XML=new XML("<node label=\"\"/>");
child.@label=text;
xml.appendChild(child);
tree.expandChildrenOf(xml,true);
} else {
Alert.show("需要先選中節點和填入文字");
}
}
private function delSel():void {
var xml:XML=tree.selectedItem as XML;
if(xml!=null) {
var list:Array=tree.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("需要先選中節點");
}
}
private function modifyLabel():void {
var xml:XML=tree.selectedItem as XML;
var text:String=addText.text;
if(xml!=null && text.length>0) {
xml.@label=text;
} else {
Alert.show("需要先選中節點");
}
}
private function selAll():void {
var text:String=searchText.text;
if(text.length>0) {
var items:Array=[];
var list:XMLList=new XMLList();
list[0]=tree.dataProvider[0];
searchItems(list,text,items);
tree.selectedItems=items;
} else {
Alert.show("輸入查找的文字");
}
}
private function searchItems(list:XMLList,find:String,items:Array):void {
for(var i:int=0;i<list.length();i++) {
var one:XML=list[i];
var label:String=one.@label;
if(label!=null && label.indexOf(find)>=0) {
items.push(one);
}
searchItems(one.children(),find,items);
}
}
]]>
</mx:Script>
<mx:Label x="10" y="46" text="增加節點:"/>
<mx:TextInput x="90" y="44" width="127" id="addText"/>
<mx:Button x="225" y="44" label="增加為弟" click="addAfter()"/>
<mx:Button x="323" y="44" label="增加為哥" click="addBefore()"/>
<mx:Button x="421" y="44" label="增加為孩子" click="addSub()"/>
<mx:Button x="193" y="10" label="刪除選中節點" click="delSel()"/>
<mx:Button x="563" y="44" label="修改標簽" click="modifyLabel()"/>
<mx:TextInput x="124" y="76" width="127" id="searchText" text="華"/>
<mx:Text x="259" y="78" text="的節點"/>
<mx:Button x="10" y="76" label="選中包含:" click="selAll()"/>
</mx:Application>
本文由用戶 ten2net 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!