Flex中Tree的父节点、叶节点的操作小结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Flex中Tree的父节点、叶节点的操作小结
近来主要涉及到的一个问题是根据用户操作动态地创建树结构,包括父节点、子节点。
经过浏览相关书籍和网上的资料,顺利按需求完成了项目,现将此知识点总结一下。
首先肯定的是<mx:Tree dataProvider="{dataTree}"></mx:Tree>,tree用到数据绑定。
要考虑的就是将怎样形式的数据绑定到Tree控件上来,提到XML、XMLList以及XMLListCollection与Tree的绑定,设计如下: [Bindable]
private var xmlTree:XML=
<root label="QueryLayers">
<father label="任务位置" isBranch="true">
<node label="任务位置_点"/>
<node label="任务位置_面"/>
</father>
<father label="DLG、GX数据">
<node label="DLG500"/>
<node label="DLG1000"/>
<node label="DLG2000"/>
<node label="GX500"/>
<node label="GX1000"/>
</father>
<father label="控制点" isBranch="true">
<node label="三角点"/>
<node label="导线点"/>
<node label="RTK"/>
<node label="GPS点"/>
<node label="水准点"/>
</father>
</root>;
[Bindable]
private var dataTree:XMLListCollection=new XMLListCollection(xmlTree.father);
<mx:Tree id="resultTree" width="30%" height="100%" labelField="@label"
showRoot="true"
dataProvider="{dataTree}"
itemClick="treeItemClickHander(event);"/>
下面涉及到树结构的操作,实际上是对XMLListCollection的操作,再往上就是对XML的操作,主要用到的操作符是.和@。
//*******添加父节点******
private function addFather(father:String):void
{
var newFather:XML=<father/>;
newFather.@label=father;
newFather.@isBranch=true;
xmlTree.appendChild(newFather);
}
//***********删除指定父节点************
private function deleteFather(father:String):void
{
var fath:XMLList=xmlTree.father.(@label==father);
for(var i:int=0;i<fath.length();i++)
{
delete fath[i];
}
}
//***********删除所有父节点*************
private function deleteFathers():void
{
var fath:XMLList=xmlTree.father;
for(var i:int=0;i<fath.length();)
{
delete fath[i];
}
}
//******给指定父节点添加子节点******
private function addNode(father:String,node:String):void {
var newNode:XML=<node/>;
newNode.@label=node;
var fath:XMLList=xmlTree.father.(@label==father);
if(fath.length()>=0)
{
//增加子节点
fath[0].appendChild(newNode);
}
}
//******给指定父节点删除子节点******
private function deleteNode(father:String,son:String):void {
var fath:XMLList=xmlTree.father.(@label==father);
var childs:XMLList=fath.children();
var iDelete:int;
for(var i:int=0;i<childs.length();i++)
{
if(childs[i].@label==son){
iDelete=i;
break;
}
}
delete childs[iDelete];
}
//******删除所有子节点******
private function deleteNodes(father:String):void
{
var fath:XMLList=xmlTree.father.(@label==father); var childs:XMLList=fath.children();
for(var i:int=0;i<childs.length();)
{
delete childs[i];
}
}
//***********是否已有父节点************
private function exitFather(father:String):Boolean
{
var fath:XMLList=xmlTree.father;
for(var i:int=0;i<fath.length();i++)
{
if(fath[i].@label==father)
{
return true;
}
}
return false;
}。