flex tree

转自:http://waston.plter.com/?p=5

Flex中Tree的用法备忘(增删改查节点)
Posted By waston on 2010 年 07 月 16 日

<?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: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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值