<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" > <fx:Script> <![CDATA[ import mx.collections.XMLListCollection; import mx.controls.Alert; [Bindable] [Embed(source="images/open.png")] public var folderOpen:Class; [Bindable] [Embed(source="images/close.png")] public var folderClose:Class; [Bindable] [Embed(source="images/file.png")] public var fileInfo:Class; [Bindable] private var company:XML= <department> <department name="部门A"> <department name="小A" /> <department name="小B" /> </department> <department name="部门B"> <department name="小C"> <department name="abc"> <department name="efg"/> </department> <department name="opqr"/> <department name="小D"> <department name="ff"/> </department> </department> </department> </department>; [Bindable] private var companyData:XMLListCollection=new XMLListCollection(company.department); private function addNode():void { // 新建节点 var newNode:XML=<employee/>; newNode.@name=empName.text; // 添加节点 var xml:XML=XML(tree1.selectedItem); if (xml.length() > 0) { xml[0].appendChild(newNode); tree1.expandChildrenOf(tree1.selectedItem,true); } } private function removeNode():void { if (tree1.selectedItem != null) { var node:XML=XML(tree1.selectedItem); Alert.show("根节点不能删除!","[错误]"); //if(tree.dataDescriptor.root){ ///Alert.show("根节点不能删除!","[错误]"); //return; //} var nodeP:XML=node.parent(); var childrenList:XMLListCollection=new XMLListCollection(XMLList(nodeP).children()); var i:Number=childrenList.getItemIndex(node); childrenList.removeItemAt(i); if(childrenList.length == 0) tree1.selectedItem = nodeP; else{ if(i == childrenList.length) i = i - 1; tree1.selectedItem = childrenList.getItemAt(i) } }else{ Alert.show("请选中一个节点再进行删除!"); } } /* * 根据节点名字模糊查询 */ private function findNode(key:String):void { //descendants()返回除了根节点以外的所有节点,然后根据条件筛选符合条件的结果集 var list:XMLList = company.descendants().(@name.indexOf(key) != -1); expandParents(list[0]); tree1.selectedItem = list[0]; } /* * 展开 */ private function expandParents(xmlNode:XML):void { while (xmlNode.parent() != null) { xmlNode = xmlNode.parent(); tree1.expandItem(xmlNode,true, false); } } //展开所有 private function expandAll():void { tree1.expandChildrenOf(tree1.dataProvider[0],true); } //收起所有 private function closeAll():void { tree1.expandChildrenOf(tree1.dataProvider[0],false); } ]]> </fx:Script> <s:layout> <s:HorizontalLayout horizontalAlign="center" verticalAlign="middle"/> </s:layout> <s:Panel title="实现添加和删除节点" width="450" height="450" > <s:layout> <s:HorizontalLayout/> </s:layout> <mx:Tree id="tree1" dataProvider="{company}" labelField="@name" height="300" showRoot="false" width="260" defaultLeafIcon="{fileInfo}" folderOpenIcon="{folderOpen}" folderClosedIcon="{folderClose}" /> <mx:VBox> <s:Button label="展开所有" click="expandAll()"/> <s:Button label="关闭所有" click="closeAll()"/> <mx:Button label="删除节点" click="removeNode();"/> <mx:HBox> <s:TextInput id="empName" width="60" click="{empName.text = ''}" prompt="新节点名" /> <mx:Button label="添加节点" click="addNode();"/> </mx:HBox> <mx:HBox> <s:TextInput id="keyName" width="60" prompt="关键字"/> <mx:Button label="查找节点" click="findNode(keyName.text)"/> </mx:HBox> </mx:VBox> </s:Panel> </s:Application>
相关推荐
在本压缩包中,我们收集了30多个与Flex3相关的源码实例,这些实例涵盖了各种功能和组件的实现,包括DateGrid编辑、鼠标事件处理、图表制作、Swf引用、Tree控件、Btn按钮以及增删改查操作。下面将逐一详细解析这些...
在Flex 3.5开发中,我们经常遇到需要创建具有交互性和可视复杂性的用户界面,其中一个常见的需求就是构建一个带有复选框的树形结构,...此外,由于使用了XML数据源,数据的增删改查变得简单,使得整个应用更具灵活性。
在本项目中,"用xul做的动态变化的 tree" 指的是一种可动态增删改的树形视图控件,这种控件在数据管理、文件系统浏览等多种场景下非常常见。 在XUL中,`<tree>`元素是用于创建树形结构的基础,它可以包含一系列的`...
- 数据容器负责存储和管理数据元素,提供了一套完善的接口用于增删改查等操作。 - 通过数据容器,开发者可以轻松实现数据的加载、保存、查询等功能。 **TWaver-Flex视图组件** - 视图组件是TWaver-Flex用来展示...
- **数据处理**:处理数据的增删改查,以及复杂的业务流程逻辑。 5. **流程引擎** - **工作流管理**:实现工作流程的自动化,如审批流程、任务分配等,可以采用BPMN(Business Process Model and Notation)标准...