`
jueyue
  • 浏览: 195392 次
社区版块
存档分类
最新评论

flex tree 动态加载 以及自动展开

    博客分类:
  • flex
阅读更多
首先主要是百度的前辈的资源,自己修改了一部分,可是还是有自己的努力成果,希望可以帮助一下大家
首先是flex的代码
/**
		 * 获取子级
		 **/
		public function getDeptChildrenDept(n_jgdh:String):void{
			_request = new WebServiceReuqest(_serviceUrl);
			_request.resultHandle = handleTheReslut;
			_request.data = n_jgdh;
			_request.request("getTree",n_jgdh,_deptType);
		}
	/**
		 * 获取机构返回的数据处理函数
		 * */
		private function handleTheReslut(data:Object,jgdh:String = null):void{
			var str:String = data as String; 
			if(str!=null&&str!=""){
				var child:XML = new XML(str); 
				if(selectedNode.children()==null||selectedNode.children().length()==0){ //判断是不是已经有子级了
					if(selectedNode.parent()!=null){ 
						mytree.dataDescriptor.addChildAt(selectedNode.parent(),child,selectedNode.childIndex(),null); //把这个机构加到树上去
						delete selectedNode.parent().children()[selectedNode.childIndex()];//删除已有的那个结点
						mytree.expandItem(child, true);//展开,这个child就是新加的那个结点,因为之前结点已经删除
					}else{ 
						selectedNode.appendChild(child);
						mytree.showRoot = true;
					} 
				} 
			} 
		}

<fx:Script>
		<![CDATA[
			import com.depth.viewer.facade.IocAppFacade;
			
			import mx.collections.ICollectionView;
			//树上显示其有几个子目录 
			private function tree_labelFunc(item:XML):String {  
				var children:ICollectionView;  
				var suffix:String = "";  
				if (mytree.dataDescriptor.isBranch(item)) {  
					children = mytree.dataDescriptor.getChildren(item);  
					suffix = " (" + children.length + ")";  
				}  
				return item[mytree.labelField] + suffix;  
			}
			//树的点击事件
			private function treeChange(e:Event):void{ 
				hostComponent.selectedNode = Tree(e.target).selectedItem as XML; 
				var id:String  = hostComponent.selectedNode.attribute("id");
				hostComponent.setMapCenterPoint(id);
				if(hostComponent.selectedNode.children()==null||
					hostComponent.selectedNode.children().length()==0){ 
					hostComponent.getDeptChildrenDept(id);
				}
				IocAppFacade.sendNotification(ConstFacade.LOAD_BUSINESS_AREA_LIST,id);
            } 
		]]>
	</fx:Script>
	<mx:Canvas  width="100%" height="100%">  
		<mx:Tree id="mytree" width="100%" height="100%"   
				 dataProvider="{hostComponent.listtree}"   
				 labelField="@label"  
				 showRoot="true"
				 labelFunction="tree_labelFunc"
				 change="treeChange(event)"
				 folderClosedIcon="@Embed('assets/yz-icons/legend/open.png')"  
				 folderOpenIcon="@Embed('assets/yz-icons/legend/close.png')"  
				 defaultLeafIcon="@Embed('assets/yz-icons/legend/default.png')"/>   
	</mx:Canvas>  

接着是后台的代码就很简单的
HttpServletRequest request = XFireServletController.getRequest();
        HttpSession session = request.getSession(true);
		List<Map<String,String>> list = common.getDeptChild(n_jgdh, session);
		OrganManage organManage = new OrganManage();
		Organ organ = organManage.getOrgan(Integer.valueOf(n_jgdh), session);
		String startnode = "<node type=\""+organ.getN_jglx()+"\" label=\""+organ.getC_jgmc()+"\" id=\""+organ.getN_jgdh()+"\">";  
	    String endnode = "</node>"; 
	    StringBuilder result = new StringBuilder();
	    result.append(startnode);
	    for(int i = 0;i<list.size();i++){
	    	if(getIsput(list.get(i).get("type"),type)){continue;}
	    	String temp = "<node type=\""+list.get(i).get("type")+"\" label=\""
	    				+list.get(i).get("name")+"\" id=\""+list.get(i).get("id")+"\"></node>";
	    	 result.append(temp);
	    }
	    result.append(endnode);
		return result.toString();

这个树自己写了好几天,虽然不是很难,但对于我,已经是一个成果了,其实只要努力的找,网上还是有答案的
0
0
分享到:
评论

相关推荐

    flex tree+checkbox级联勾选

    Flex Tree是基于Adobe Flex技术的一种组件,它能够展示层次结构的数据,并且支持节点的展开、折叠以及动态加载。每个节点都可以包含子节点,形成一个层级结构。在Flex中,我们可以使用mx.controls.Tree类来创建和...

    Flex Tree快速定位树结点

    总结起来,"Flex Tree快速定位树结点"是一个提高用户交互体验的功能,它通过监听用户输入并搜索匹配的树节点,然后自动展开或选择目标节点,方便用户快速找到所需信息。在Flex编程中,实现这一功能涉及UI设计、事件...

    flex tree 修改icon方法

    综上所述,修改Flex Tree的icon涉及到创建自定义渲染器、数据绑定、根据数据源动态设置图标等步骤。理解这些概念和技巧对于构建具有个性化视觉效果的Flex应用程序至关重要。在实践中,需要注意代码的可维护性和性能...

    flex 异步加载tree

    根据给定的信息,我们可以深入探讨Flex中的异步加载Tree组件的相关知识点。 ### 一、Flex与AsyncTree组件 #### 1. Flex简介 Flex是一种开源的框架,用于构建跨平台的桌面应用程序和移动应用程序。它提供了强大的...

    tree动态数据源和搜索打开节点所有上级

    在本场景中,"tree动态数据源"指的是在运行时能够根据需要加载或更新的数据源,而"搜索打开节点所有上级"则是关于在`Tree`组件中实现搜索功能,并且在搜索到特定节点时,自动展开该节点及其所有父级节点的功能。...

    flex checkbox tree

    CheckTree是基于Flex Tree的自定义组件,它添加了复选框功能,允许用户进行多选操作。这个组件支持三种状态的复选框:未选中、选中和部分选中,提供了丰富的可定制属性,包括但不限于: 1. **m_checkBoxStateField*...

    flex3 Tree右键菜单

    总的来说,Flex3 Tree右键菜单的实现涉及到对ContextMenu类、MenuItem类以及相关事件的理解和使用。通过自定义菜单项和事件处理,我们可以创建符合应用需求的交互式右键菜单,提高用户操作的便捷性。同时,灵活的...

    flex xml生成tree 源码

    描述:此代码示例展示了如何在Flex应用程序中使用XML数据来动态生成一个树形结构(Tree)。Flex是Adobe Systems开发的一款开源框架,用于构建跨平台的桌面和移动设备应用。这段代码通过HTTPService组件从外部XML文件...

    Flex中tree实现的种种细节

    同时,`Tree`组件还支持数据提供者(如ArrayCollection)动态更新,这意味着当数据源发生变化时,Tree会自动更新其视图。 文章可能会详细讲解如何使用MXML或ActionScript创建Tree实例,并绑定数据源。对于源码部分...

    Flex实现带复选框的列表树

    2. 列表树组件(Tree):在Flex中,Tree组件用于显示分层的数据结构,每个节点可以展开或折叠,展示其子节点。通过自定义节点模板,我们可以添加复选框到每个节点,使用户能够选择特定的节点。 3. 复选框(Checkbox...

    Flex中在Tree绑定数据后自动展开树节点的方法

    在实际应用中,我们经常需要在数据绑定到Tree之后自动展开所有的树节点,以便用户能够立即查看到完整的信息,而无需手动去逐个展开。下面将详细介绍在Flex中实现这个功能的几种方法。 首先,Flex提供的`...

    flex 动态树,异步树

    1. Flex中的动态树(Dynamic Tree): 动态树是一种可以实时更新和改变的树形数据结构。在Flex应用中,它通常用于展示层次化数据,如文件系统、组织架构或任何具有父-子关系的数据。动态树的优点在于,当数据源发生...

    flex动态树_动态图表

    4. **交互功能**:可能包括如何添加点击事件处理程序,使用户可以交互式地展开/折叠树节点,或者在图表上进行缩放、平移等操作。 5. **性能优化**:可能提到了处理大量数据时的性能考虑,如延迟加载(lazy loading...

    Flex 下拉框为Tree的ComboBox

    为了实现TreeComboBox,我们需要对ComboBox进行扩展,添加对Tree数据的支持。这通常涉及以下几个关键步骤: 1. **自定义ComboBox**: 创建一个新的MXML组件,继承自ComboBox类。在这个新组件中,我们需要覆盖或扩展...

    flex json转无限树形加单选框并获得选中子项 自动展开

    "flex json转无限树形加单选框并获得选中子项 自动展开"这一主题涉及到多个技术点,包括JSON数据处理、无限层级树形结构的构建、单选框(checkbox)的实现以及节点的自动展开功能。下面将详细讲解这些知识点。 1. ...

    d3写的可伸缩收起的树结构代码

    在我们的代码中,`d3.tree()`函数被用来创建一个树布局实例,它会根据给定的尺寸和数据自动计算每个节点的位置。 2. **数据绑定(Data Binding)** 在D3中,数据绑定是将数据数组与DOM元素关联的关键步骤。通过`d3...

    Flex ComboBox 树形控件

    可以添加搜索功能,使用户在输入文本时,下拉列表动态过滤显示匹配项,提高用户体验。 8. **展开与折叠**: 用户可以通过点击节点图标来展开或折叠节点,以查看或隐藏其子节点。这可以通过监听`toggle`事件并在...

    flex demos

    Tree Demos展示了如何填充树节点、响应用户交互(如点击、展开/折叠节点)、动态加载子节点等。这对于设计具有多层级结构的界面非常有帮助。 4. **源码分析**: 这个压缩包还包含了源码,这意味着开发者可以深入...

Global site tag (gtag.js) - Google Analytics