flex as实现树的数据递归 系统管理视图会用到的
来源:互联网 发布:英雄联盟辅助软件 编辑:程序博客网 时间:2024/05/16 17:46
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
fontFamily="simsun" fontSize="12"
layout="absolute" creationComplete="init()" width="100%" height="100%">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
[Bindable]
private var menus:XML;
public function init():void{
menu.send();
var treeMenus:XML = tree2.dataProvider as XML;
var modules:String = "1,11,12,4";
var ids:Array = modules.split(",");
//Alert.show(treeData.tree.toString()+"","Test");
//不相等就要删除
var trees:XMLList = XMLList(treeData.tree);
tree1.dataProvider = treeData.tree;
for(var i:int=0;i<ids.length;i++){
var str:String = ids[i];
isExists(str,trees);
}
//trace(treeData.tree);
delNoVisibleNode(trees);
trace(trees);
tree2.dataProvider = trees;
}
public function isExists(str:String,trees:XMLList):void{
//trace(str);
for each(var t:XML in trees){
if(t.@id.toString()==str){
t.@visible = true;
}
isExists(str,t.tree);
}
}
//一定要用索引,而且删除的对象要是XMLList里面的元素,不然会报错,或者不能删除
private function delNoVisibleNode(xmllist:XMLList):void{
//for each (var item:XML in xmllist)
for (var i:int=xmllist.length() - 1; i >= 0; i--){
var item:XML=xmllist[i];
if (item.@visible.toString() != "true" && item != null){
delete xmllist[item.childIndex()];
//menuByVisibleFlaseXML.appendChild(item);
//删除符合条件的子节点: delete xml.children()(@type == “car” && @color == “red”);
}else if (item.@visible.toString() == "true"){
//有子节点
if (item.hasComplexContent()){
arguments.callee(item.children());
}
}
}
}
private function LoadMenu(event:ResultEvent):void{
menus = XML(event.result);
var results:XMLList = menus.node;
tree.dataProvider = results;
}
]]>
</mx:Script>
<mx:XML id="treeData" source="assets/data/TreeData.xml" format="e4x"/>
<mx:HTTPService url="assets/data/TreeMenus.xml" id="menu" useProxy="false"
showBusyCursor="true" result="LoadMenu(event)" resultFormat="xml"/>
<mx:HBox width="100%">
<mx:VBox width="46%">
<mx:Tree id="tree" x="10" y="35" width="218" height="397" labelField="@label" />
<mx:Label x="10" y="10" text="Tree Nodes From XML File"/>
</mx:VBox>
<mx:VBox>
<mx:Tree id="tree1" x="10" y="35" width="218" height="397" labelField="@label" />
</mx:VBox>
<mx:VBox width="52%">
<mx:Tree id="tree2" x="10" y="35" width="218" height="397" labelField="@label" />
</mx:VBox>
</mx:HBox>
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
fontFamily="simsun" fontSize="12"
layout="absolute" creationComplete="init()" width="100%" height="100%">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
[Bindable]
private var menus:XML;
public function init():void{
menu.send();
var treeMenus:XML = tree2.dataProvider as XML;
var modules:String = "1,11,12,4";
var ids:Array = modules.split(",");
//Alert.show(treeData.tree.toString()+"","Test");
//不相等就要删除
var trees:XMLList = XMLList(treeData.tree);
tree1.dataProvider = treeData.tree;
for(var i:int=0;i<ids.length;i++){
var str:String = ids[i];
isExists(str,trees);
}
//trace(treeData.tree);
delNoVisibleNode(trees);
trace(trees);
tree2.dataProvider = trees;
}
public function isExists(str:String,trees:XMLList):void{
//trace(str);
for each(var t:XML in trees){
if(t.@id.toString()==str){
t.@visible = true;
}
isExists(str,t.tree);
}
}
//一定要用索引,而且删除的对象要是XMLList里面的元素,不然会报错,或者不能删除
private function delNoVisibleNode(xmllist:XMLList):void{
//for each (var item:XML in xmllist)
for (var i:int=xmllist.length() - 1; i >= 0; i--){
var item:XML=xmllist[i];
if (item.@visible.toString() != "true" && item != null){
delete xmllist[item.childIndex()];
//menuByVisibleFlaseXML.appendChild(item);
//删除符合条件的子节点: delete xml.children()(@type == “car” && @color == “red”);
}else if (item.@visible.toString() == "true"){
//有子节点
if (item.hasComplexContent()){
arguments.callee(item.children());
}
}
}
}
private function LoadMenu(event:ResultEvent):void{
menus = XML(event.result);
var results:XMLList = menus.node;
tree.dataProvider = results;
}
]]>
</mx:Script>
<mx:XML id="treeData" source="assets/data/TreeData.xml" format="e4x"/>
<mx:HTTPService url="assets/data/TreeMenus.xml" id="menu" useProxy="false"
showBusyCursor="true" result="LoadMenu(event)" resultFormat="xml"/>
<mx:HBox width="100%">
<mx:VBox width="46%">
<mx:Tree id="tree" x="10" y="35" width="218" height="397" labelField="@label" />
<mx:Label x="10" y="10" text="Tree Nodes From XML File"/>
</mx:VBox>
<mx:VBox>
<mx:Tree id="tree1" x="10" y="35" width="218" height="397" labelField="@label" />
</mx:VBox>
<mx:VBox width="52%">
<mx:Tree id="tree2" x="10" y="35" width="218" height="397" labelField="@label" />
</mx:VBox>
</mx:HBox>
</mx:Application>
- flex as实现树的数据递归 系统管理视图会用到的
- Flex中视图(mxml)和代码(as)的完全分离
- SAP 系统管理用到的T-CODE
- 会用到的
- 用到 监听视图树的观察者 ViewTreeObserver
- 数据中经常会用到的日期转换
- Core Text实现编辑的时候会用到的
- 服务器会用到的SHELL
- 会用到的下载地址
- 素材 会用到的网站
- Flex的视图状态。
- linux系统管理中经常用到的几个命令
- Flex-换皮肤的as
- as、flex、flash的关系:
- 使用DB2的with as 语句 实现树的递归查询
- ios 用到的数据
- 树的实现-flex
- flex敏感词过滤用到的
- 认识 POWER7 架构
- java 运行机制--浅谈
- NoSQL数据库之Redis数据库管理六(Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存)
- 在外部其他类中,如何直接访问静态内部类呢?new outer.inner().function();
- WIN7系统下安装IIS
- flex as实现树的数据递归 系统管理视图会用到的
- 触摸屏幕=OGS以及贴合
- ARM GIC中断控制器介绍
- (13)21.2.6 优先级
- 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
- 管理类-风险管理
- 安装MySQL在win7,64位上,遇到cannot create Windows service for MySql.Error:0
- 读《影响力 Influence:The psychology of Persuasion》-罗伯特.西奥迪尼著(下)
- java异常总结