`
redish
  • 浏览: 31143 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

Flex 动态加载树 (测试)

阅读更多
最近在看Flex,用RemoteObject方法(Blazeds)做了个动态加载树的小例子,不是很好,以后再慢慢改进吧.
mxml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script >
 	<![CDATA[
 		import mx.events.ListEvent;
 		import mx.events.TreeEvent;
 	        import mx.controls.Alert;
 	        import mx.rpc.events.ResultEvent;
 		import mx.collections.ArrayCollection;
 		import mx.collections.XMLListCollection;
 	         private var _node:XML;
 	
 		  [Bindable]
 		  private var xmlTree:XML = <node nodename="root" id="0" is_parent="1" parentnode="" action="">
 		  <nodetemp nodename="" id="" is_parent="" parentnode="" action=""></nodetemp>
 		  </node>;

 		private function   addNewNode(treenode:XML,resultList:ArrayCollection):void{
 			if(null==resultList){
 				return ;
 			}
 			 for(var i:Number=0;i<resultList.length;i++){
 			 	  var newNode:XML = <node/>;
 			 	   newNode.@id=resultList[i]["node"];
 			 	   newNode.@is_parent=resultList[i]["is_parent"];
 			 	   newNode.@nodename=resultList[i]["nodename"];
 			 	   newNode.@parentnode=resultList[i]["parentnode"];
 			 	   newNode.@action=resultList[i]["action"];
 			 	   right_tree.dataDescriptor.addChildAt(treenode, newNode, i, treenode);
 			//如果有子节点就创建临时节点,让这个节点有itemOpen的方法	  
                   if("1"==resultList[i]["is_parent"]){
                      	var nodetemp:XML = <nodetemp/>;
 	               	    right_tree.dataDescriptor.addChildAt(newNode, nodetemp, 0, newNode);
 	               }
 			 }	  
 		}
 		 
         private  function getRightByParntResult(event:ResultEvent):void{
           	  var resultList:ArrayCollection =event.result as ArrayCollection;
 			  addNewNode(_node,resultList);
           }
           
         private function tree_itemOpen(evt:TreeEvent):void {
                 var t:Tree = evt.currentTarget as Tree;           
                 _node= evt.itemRenderer.data as XML;
                 var hasload:Boolean = false;
                 var xmllist:XMLList = _node.elements("nodetemp");
                //删除拥有子节点的临时节点
 			     if(null != xmllist && xmllist.length() >0 ){
 			     	for(var i:Number=0;i<xmllist.length();i++){
 			     	var temp:XML = xmllist[i] as XML
 			     		 right_tree.dataDescriptor.removeChildAt(_node,temp,i,_node);	
 			     	}
 			     }
 			      xmllist  =_node.elements("node");
                             //如果这个节点已经取过子节点就返回,不需要再取
 			      if(null!=xmllist&&xmllist.length()>0){  
 			    	return;
 			      }
                  rightHandler.endpoint="messagebroker/amf";
                  var nodeid:String=_node.@id ;
 			      rightHandler.getRightByParent(nodeid);
          }   

 	]]>
 </mx:Script>
 
	<mx:RemoteObject id="rightHandler" destination="rightHandler"  >
	     <mx:method  name="getRightByParent"  result="getRightByParntResult(event)" />
	</mx:RemoteObject>
	
	     <mx:Tree id="right_tree" 
	     dataProvider="{xmlTree}" 
	     itemOpen="tree_itemOpen(event)"
	     labelField="@nodename"
	     bottom="0" top="25" right="0" left="0">
	     </mx:Tree>
</mx:Application>

Java代码
package com.cpk.service;

import java.util.List;
import java.util.Map;

import com.cpk.dao.RightDao;
public class RightHandler {

	 public List<Map<String,String>> getRightByParent(String parentID){
		 RightDao dao=new RightDao();
        return dao.query(parentID);

	 }

}


package com.cpk.dao;

import java.util.List;
import java.util.Map;

import com.caipk.newjdbc.sql.Finder;
import com.caipk.newjdbc.template.Jdbc;

public class RightDao extends Jdbc {
	
  public List<Map<String,String>> query(String parentid){		
	return this.query(
		Finder.create("select node,parentnode,nodename,action,title,closeimg,openimg,")
		.append(" decode( (select node from right t where node in(select distinct parentnode from right  where status='0') and t.node=right.node and  parentnode=?),null,'0','1') as is_parent ")
		.append(" from right")
		.append(" where parentnode=?")
		.setParam(parentid)
		.setParam(parentid)
		);
  }
		
}

remoting-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" 
    class="flex.messaging.services.RemotingService">

    <adapters>
        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
    </adapters>

    <default-channels>
        <channel ref="my-amf"/>
    </default-channels>
 <!--  
    <destination id="GenericDestination">
        <properties>
            <source>*</source>
        </properties>
    </destination>
   -->
    <destination id="EmployeeHandler">
        <properties>
            <source>com.cpk.service.EmployeeHandler</source>
        </properties>
    </destination>

     <destination id="rightHandler">
        <properties>
            <source>com.cpk.service.RightHandler</source>
        </properties>
    </destination>


</service>
分享到:
评论
3 楼 yan3999 2010-02-23  
楼主能不能给过源程序包啊,mport com.caipk.newjdbc.sql.Finder; 
import com.caipk.newjdbc.template.Jdbc; 这两个不会弄啊...谢谢了
2 楼 redish 2009-08-21  
这个就是只是对JDBC的封装而且,可以使用Spring的。
1 楼 justdo2008 2009-08-19  
您好,问

import com.caipk.newjdbc.sql.Finder;  
import com.caipk.newjdbc.template.Jdbc;

可以发上来吗?谢谢

相关推荐

    从头开发Flex树遇到的问题

    在实际开发过程中,开发者可能会遇到的问题包括但不限于数据加载、节点展开/折叠的性能优化、节点点击事件处理、节点渲染自定义、树的动态更新、以及跨浏览器兼容性等。解决这些问题通常需要深入理解Flex的组件架构...

    flex air 本地文件管理器

    Tree控件可以动态加载数据,确保了性能的同时也降低了内存占用。通过绑定到文件系统的数据源,可以实时反映出文件和文件夹的变更。 此外,“缩略图形式展示文件”是Flex Air另一个增强用户体验的特性。通过使用...

    EXTJS动态树的实现举例示例代码

    动态树是一种可以实时加载或异步加载节点数据的树形结构,适用于显示大量层次化的信息。 在EXTJS中,动态树的实现主要依赖于`Ext.tree.Panel`类和`Ext.data.TreeStore`类。`TreeStore`负责管理树的数据源,而`...

    flex grade tree 小案例

    1. **noTest.mxml**:这个文件可能是用来测试基础功能的,可能包含了一个简单的树形结构,用于演示Flex Tree组件的基本用法,如添加节点、设置节点文本、处理点击事件等。 2. **sclarTest.mxml**:"sclar"可能是...

    flex Tree checkbox 修改过后的

    例如,通过懒加载技术只在需要时加载节点,或者在大量节点被选中或取消选中时批量更新数据。 6. **测试与调试**: 对修改后的Tree控件进行全面的测试,确保所有功能正常工作,没有边界条件问题,如空节点、只有一...

    flex demos

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

    flex tree 拖拽

    Flex Tree 是一种基于 Adobe Flex 技术实现的可交互树形数据结构组件,它允许用户以图形化的方式查看和操作层次结构数据。在 Flex 应用中,Tree 控件经常用于展示具有层级关系的数据,例如文件系统、组织结构或者...

    flex Tree 相册 json格式数据

    在实际项目中,开发者可能需要结合这些知识点,创建一个能够动态加载、展示相册结构的Flex Tree应用。由于没有具体的代码示例,无法深入讨论细节,但以上概述了实现该功能所需的关键概念和技术。对于想要深入学习的...

    flex-j2ee相结合的教程,完美

    Flex和J2EE结合的教程主要探讨了如何利用Adobe Flex技术构建富互联网应用程序(RIA),并与Java企业级应用服务器(J2EE)进行后端交互,实现数据的动态加载和处理。这个教程对于同时熟悉Flex和Java的开发者来说,是...

    flex 资源

    这很可能是Flex中一个用于测试树形控件(Tree Control)的示例程序。Tree Control是Flex提供的数据可视化组件,用于展示层次结构的数据。开发者可以通过MXML或者ActionScript来创建和配置树形控件,设置其数据提供者...

    Web测试技术大全

    编写测试类、执行测试用例等步骤都是Flex单元测试的基础。 #### Silverlight自动化测试 Silverlight是微软推出的一款用于构建RIA的框架,它同样支持自动化测试。TestComplete是一款强大的自动化测试工具,可用于...

    flex 4 help

    - **子应用程序的开发与加载**:Flex支持将大型应用程序分解为多个较小的子应用程序,这些子应用程序可以根据需要动态加载。 - **Flex Ajax Bridge**:Flex Ajax Bridge提供了一种机制,使Flex应用程序能够与...

    Flex3.0RIA开发详解电子教程14

    10. **测试和调试**:FlexBuilder提供了强大的测试和调试工具,包括FlexUnit单元测试框架,理解如何有效地使用这些工具可以提高开发效率。 通过学习“Flex3.0 RIA开发详解电子教程14”,开发者不仅可以掌握Flex的...

    一些不错的开源Flex项目.txt

    - **简介**:一个用于测试和调试Flex应用的框架。 - **特点**: - 测试支持:内置了单元测试框架,简化测试过程。 - 调试工具:提供了强大的调试功能,帮助开发者定位问题。 - 性能监控:能够监测应用运行时的...

    Flex Air 拖拽排版 类似 ps 图层

    10. **测试与调试**:在整个开发过程中,单元测试和集成测试都是必不可少的,以确保各个功能模块的正确性和整体性能。 以上就是关于"Flex Air 拖拽排版 类似 ps 图层"这个主题涉及的一些主要技术点。通过学习和实践...

    flex_4.6_help.pdf

    根据提供的文件信息“flex_4.6_help.pdf”,我们可以从中提炼出Adobe Flex 4.6这一版本的关键知识点,包括但不限于其开发工具、应用架构、用户界面构建、数据驱动UI组件的使用以及增强用户体验等方面。 ### Adobe ...

    基于Angular和AngularMaterial的树形表格组件

    6. **性能优化**:在处理大量数据时,懒加载和虚拟滚动等技术可以提高组件的性能,只渲染可视区域内的节点,避免一次性加载所有数据导致的性能问题。 7. **响应式设计**:确保组件在不同屏幕尺寸下都能正常工作,...

    HTML5树形结构图DIV布局代码.zip

    在树形结构图中,每个节点通常会用一个`&lt;div&gt;`表示,而子节点则嵌套在父节点的`&lt;div&gt;`内,通过CSS的`display`属性(如`block`、`inline-block`或`flex`)来控制布局,形成层次结构。 CSS特效在这里起着至关重要的...

    基于嵌入式Linux的程控仪器SCPI解释器的实现方法研究

    2. **命令树加载**: 根据第一步得到的子系统根命令动态加载相应的命令树。每台仪器都有自己的命令树结构,这使得SCPI具有高度的灵活性和适应性。 3. **遍历命令树**: 从根节点开始遍历命令树,直至找到与输入字符串...

Global site tag (gtag.js) - Google Analytics