flex tree 动态加载 以及自动展开
2013-10-30 13:58
363 查看
首先主要是百度的前辈的资源,自己修改了一部分,可是还是有自己的努力成果,希望可以帮助一下大家
首先是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();
这个树自己写了好几天,虽然不是很难,但对于我,已经是一个成果了,其实只要努力的找,网上还是有答案的
相关文章推荐
- FLex中Tree与JavaScript交互动态加载数据
- FLEX Tree 控件动态加载
- 在Flex中让Tree绑定数据后自动展开树节点
- Ext.tree如何创建树以及动态加载树
- easyUI treeGrid 惰性加载,动态加载,无论有无子节点都显示展开图标
- Flex中在Tree绑定数据后自动展开树节点的方法
- 在Flex中让Tree绑定数据后自动展开树节点
- Flex:拖拽时自动展开 Tree 节点
- Ext.tree如何创建树以及动态加载树
- Flex中实现Tree绑定数据后自动展开节点
- flex的tree动态加载大量数据与滚动条相关问题探讨
- FLex中Tree与JavaScript交互动态加载数据
- FLEX教程:设置缓动展开TREE控件节点.
- Flex中如何利用openItems属性,检测当前Tree的哪一个节点被展开
- JS脚本动态加载,以及加载完成后执行回调
- asp.net ext treepanel 动态加载XML的实现方法
- Android关于分包方案、插件化动态加载APK或DEX 以及热补丁资料总结
- android左右滑动加载分页以及动态加载数据
- mini-treegrid控件怎么懒加载时,默认不展开子节点,只显示以及目录
- DevExpress TreeList 自动加载数据