- 浏览: 274353 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
夏保森:
太简单了,而且不是太好用,我现在项目就是要实现这样一个功能,比 ...
前台拼接SQL语句 -
人参萝卜:
楼主你好,想要一下这个样例工程的源码,能否分享一下,多谢多谢! ...
MxGraph web流程设计器破解 -
814292160:
为什么解压不了
extjs多文件上传 -
dongqing82585061:
楼主你好,能给份这个demo给我吗?现在我刚好需要实现类似的效 ...
MxGraph web流程设计器破解 -
ddccjjwwjj:
在JBPM中你的连线坐标根本无法做到JBPM的效果 全部会变形 ...
MxGraph web流程设计器破解
此DEMO 建立在 Struts +Hibernate
建立2张表 person ,department
定义2个类 person.java ,department.java
建立person.hbm.xml , department.hbm.xml
department.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.bkx.oa.vo.Department" table="department" catalog="bkxoa"> <id name="deptid" type="java.lang.Integer"> <column name="deptid" /> <generator class="native"></generator> </id> <property name="dparentid" type="java.lang.Integer"> <column name="dparentid" /> </property> <property name="dleaf" type="java.lang.Integer"> <column name="dleaf" /> </property> <property name="dchild" type="java.lang.Integer"> <column name="dchild" /> </property> <property name="dname" type="java.lang.String"> <column name="dname" length="32" /> </property> <property name="dloc" type="java.lang.String"> <column name="dloc" length="32" /> </property> <property name="dbusiness" type="java.lang.String"> <column name="dbusiness" length="32" /> </property> <set name="persons" inverse="true" cascade="all" lazy="false"> <key> <column name="deptid" /> </key> <one-to-many class="com.bkx.oa.vo.Person" /> </set> </class> </hibernate-mapping>
person
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.bkx.oa.vo.Person" table="person" catalog="bkxoa"> <id name="pid" type="java.lang.String"> <column name="pid" length="32" /> <generator class="assigned"></generator> </id> <many-to-one name="department" class="com.bkx.oa.vo.Department"> <column name="deptid" /> </many-to-one> <property name="pname" type="java.lang.String"> <column name="pname" length="32" /> </property> <property name="page" type="java.lang.Integer"> <column name="page" /> </property> <property name="psex" type="java.lang.String"> <column name="psex" length="4" /> </property> </class> </hibernate-mapping>
建立一个Action OrgTreeJsonDataAction
/* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package com.bkx.oa.struts.action; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.bkx.oa.factory.DaoFactory; import com.bkx.oa.vo.Department; import com.bkx.oa.vo.Person; /** * MyEclipse Struts * Creation date: 11-01-2008 * * XDoclet definition: * @struts.action validate="true" */ public class OrgTreeJsonDataAction extends Action { /* * Generated Methods */ /** * Method execute * @param mapping * @param form * @param request * @param response * @return ActionForward */ private String JosnString; private String person; public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub int parentid = Integer.parseInt(request.getParameter("parentid")); try { if(parentid==-100){ parentid=0; } List<Department> list = DaoFactory.getDepartmentInstance().queryByDeptid(parentid); Iterator<Department> iter = list.iterator(); if (list != null && !list.isEmpty()) { int i = 0; int last = list.size(); String person = ""; while (iter.hasNext()) { Department de = new Department(); de = iter.next(); if(de.getPersons().size()>0){ person=" ,"+this.getPersonname(de.getPersons()); } //如果只有一行 if(last==1){ this.setJosnString("[{\"text\" :\"" + de.getDname().toString() + "\" ,\"id\" :\"" + de.getDeptid() + "\" ,\"cls\" :\"folder\"" + person+ "}] "); //如果有多行显示第一行 }else if (i == 0) { this.setJosnString("[{\"text\" :\"" + de.getDname().toString() + "\" ,\"id\" :\"" + de.getDeptid() + "\" ,\"cls\" :\"folder\"" + person+ "} "); //判断是不是最后一行 } else if (i == (last - 1)) { this.setJosnString(this.getJosnString() + ",{\"text\" :\"" + de.getDname().toString() + "\" ,\"id\" :\"" + de.getDeptid() + "\" ,\"cls\" :\"folder\"" + person+ "}]"); //显示中间部分 } else { this.setJosnString(this.getJosnString() + ",{\"text\" :\"" + de.getDname().toString() + "\" ,\"id\" :\"" + de.getDeptid() + "\" ,\"cls\" :\"folder\"" + person+ "}"); } i++; } } else { this.setJosnString(""); } //System.out.print(this.getJosnString()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.print(this.getJosnString()); request.setAttribute("treenote", this.getJosnString()); return mapping.findForward("tree"); } public String getPersonname(Set<Person> p){ this.setPerson(" "); if(p!=null&& !p.isEmpty()){ Iterator<Person> iter = p.iterator(); int i=0; int last = p.size(); while(iter.hasNext()){ Person person = new Person(); person =iter.next(); if(last==1){ this.setPerson(this.getPerson()+"\"children\" :[{\"text\" :\""+person.getPname()+"\" ,\"id\" :\""+person.getPid()+"\" ,\"leaf\" :\"true\"}] "); }else if(i==0){ this.setPerson(this.getPerson()+"\"children\" :[{\"text\" :\""+person.getPname()+"\" ,\"id\" :\""+person.getPid()+"\" ,\"leaf\" :\"true\"}"); }else if(i==last-1){ this.setPerson(this.getPerson()+",{\"text\" :\""+person.getPname()+"\" ,\"id\" :\""+person.getPid()+"\" ,\"leaf\" :\"true\"}] "); }else { this.setPerson(this.getPerson()+",{\"text\" :\""+person.getPname()+"\" ,\"id\" :\""+person.getPid()+"\" ,\"leaf\" :\"true\"}"); } i++; } }else{ this.setPerson(""); } return this.getPerson(); } public String getJosnString() { return JosnString; } public void setJosnString(String josnString) { JosnString = josnString; } public String getPerson() { return person; } public void setPerson(String person) { this.person = person; } }
建立一个JS文件
Ext.onReady(function() { var Tree = Ext.tree; var tree = new Tree.TreePanel( { el : 'tree-div',//目标div容器 autoScroll : true, animate : true, enableDD : true, containerScroll : true, loader : new Tree.TreeLoader( { dataUrl : 'orgTreeJsonData.do'// OrgTreeJsonData.action就是要动态载入数据的请求地址,这里请求时会提交一个参数为node的值,值为root即new Tree.AsyncTreeNode()对象的id值 }) }); var root = new Tree.AsyncTreeNode( { text : '组织机构树', draggable : false, id : '-100'//默认的node值:?node=-100 }); tree.setRootNode(root); tree.on('beforeload', function(node){ tree.loader.dataUrl = 'orgTreeJsonData.do?parentid='+node.id; }); tree.setRootNode(root); //为树上的节点添加事件 tree.on('click',function(node){ Ext.Msg.alert(' 您点击的是: ',node.text); }); tree.render(); root.expand(); });
Struts-config.xml
建立一个HTML页面
<HTML> <HEAD> <TITLE> New Document </TITLE> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" /> <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext/js/ext-all.js"></script> <script type="text/javascript" src="org.js"></script> </HEAD> <BODY> <div id="tree-div" style="overflow:auto; height:350px;width:300px;border:2px solid #c3daf9;"></div> </BODY> </HTML>
最后结果
- 前台界面.rar (1.4 KB)
- 下载次数: 90
发表评论
-
ExtJs 之动态列实现
2012-05-11 20:50 1492Ext.grid.DynamicGrid = Ext.exte ... -
Extjs grid宽度自适应
2011-04-12 19:04 2765第一种方法必须在页面上设置div的宽度<div id=& ... -
extjs多文件上传
2010-11-02 22:52 4250此demo 基于Struts2+Hibernate+Sp ... -
Ext.ux.UploadDialog 上传
2010-08-16 00:05 2225看着公司的协同上传做的实在是无语,一怒之下重新自己做了个上传组 ... -
Ext.ux.UploadDialog ext3.0无法使用
2010-08-13 13:51 2351ext3.2.1 使用Ext.ux.UploadDialog ... -
压缩extjs
2010-08-12 23:45 23991.使用gzip.exe打包压缩后的JS文件,最后生成xx.j ... -
Ext 动态加载js
2010-06-12 10:57 1439ScriptLoader = function() { ... -
Ext.extend()的说明
2009-05-24 20:57 1362Ext.extend方法是用来实现类的继承。 extend( ... -
Ext-API详解
2009-05-24 20:50 17521、Ext.apply(Object obj, Object ... -
使用json-lib将java对象转换成json字符串
2009-05-21 12:24 9988学会了在j2ee中使用ajax后,有时候从服务器返回客户端的数 ... -
Ext.Ajax.request 与FormPanel.form.submit
2009-04-30 00:58 5122关于Ext.Ajax.request Ext. ... -
Ext ComboBox Tree 下拉树型菜单
2009-02-27 21:18 7837var comboxWithTree = new Ext.fo ... -
Ext 2.1 中文版API Documentation
2009-02-27 14:54 2586Ext 中文API -
Extjs简单版酒店管理系统
2009-02-25 16:58 1673默认登陆页面为login.aspx,默认管理员帐号/密码:ad ... -
实现Ext Grid宽高自适应
2009-02-16 23:19 1542不知是Ext的Bug还是其他原因,当初始化grid并将宽度设为 ... -
Ext2.0框架的Grid使用介绍祥解
2009-02-16 13:13 1009Ext2.0框架的Grid使用介绍 最近空闲时间在学习 ... -
项目开发中遇到的extjs问题总结
2009-02-15 23:15 3531事件触发机制 l 给某一个控件添加事件。 ... -
《ExtJS2.0实用简明教程》之对话框
2008-09-20 10:53 1053由于传统使用alert、confirm等方法产生的对话框非常古 ... -
Ext.MessageBox
2008-09-04 12:18 3966一、提示框(Ext.MessageBox.alert 或 ...
相关推荐
在本文中,我们将深入探讨如何使用Ext JS的Tree Panel与JSON数据进行动态加载,并实现多选和单选功能。Ext JS是一种强大的JavaScript库,用于构建富客户端应用,而Tree Panel则是展示层次结构数据的一种组件。在后台...
Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载
EXT Tree提供了丰富的功能,包括节点的动态加载、拖放操作、节点选择以及自定义图标和样式。 在EXT Tree的使用实例中,我们通常会涉及到以下几个关键知识点: 1. **配置项与属性**:EXT Tree允许通过配置项定制其...
在Ext JS这个强大的JavaScript框架中,动态加载表单数据是一种常见的功能需求,特别是在构建数据驱动的应用程序时。本文将深入探讨如何使用JSON格式的数据来实现这一功能,以便于灵活地更新和显示表单内容。 首先,...
EXT JS Tree组件提供了丰富的功能,包括拖放操作、节点的展开与折叠、异步加载数据以及自定义图标和样式。它支持JSON和XML格式的数据源,并可以通过Ajax请求动态加载子节点,优化了大数据量时的性能。开发者还可以...
当我们谈论“DWR方式动态加载EXT TreePanel”时,意味着我们需要使用DWR来获取服务器端的数据,并将其动态地填充到EXT TreePanel中,以实现数据的实时更新和交互性。这种技术的应用场景可能包括:当用户需要查看或...
动态加载本地数据到`Ext.Panel`通常涉及到异步请求,使用`Ajax`或`Store`的`load`方法,通过URL获取JSON或XML格式的数据,并将其渲染到面板内。 例如: ```javascript var panel = Ext.create('Ext.Panel', { ...
本文详细介绍了如何使用ExtJS中的`Ext.ux.tree.TreeGrid`组件实现异步加载功能,包括前端配置和后端数据处理两个方面。通过这种方式可以有效提升用户体验,同时减轻服务器的压力。在实际开发过程中,还需要根据具体...
3. **动态加载节点**:这种tree设计适用于大型数据集,每个父节点只在展开时才向服务器请求其子节点的数据。这样可以显著减少初始加载时间,提高用户体验。每次展开节点时,后台需要能够快速响应并返回相应的子节点...
综上所述,"ext grid tree 应用"展示了EXT JS在构建动态、交互式Web应用程序的强大能力,包括数据展示、数据管理、用户交互以及个性化设置等多个方面。通过学习和理解这些知识点,开发者可以更好地利用EXT JS创建...
`Ext.Loader` 是 Ext4 中的一个核心特性,用于动态加载所需的 JavaScript 类库和模块,这在开发大型应用时尤其有用,因为它可以显著减少页面初次加载时的资源需求。 动态加载的核心在于按需加载,即只有在实际需要...
`Ext.tree.TreeLoader`是Ext JS库中的一个组件,它负责加载和解析树形结构的数据,而JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,非常适合于在服务器和客户端之间传输数据。我们将通过实例...
将EXT Tree与SSH2结合,意味着开发者可能通过Java后端服务获取数据,并用EXT Tree在前端展示,同时实现动态加载、异步更新等功能。 在实际操作中,这个项目可能包含以下步骤: 1. 配置SSH2环境:设置Struts配置...
EXT的TREE组件通常与JSON数据源配合使用,通过异步加载或者一次性加载所有数据来构建树结构。这个文件可能包含了节点ID、父节点ID、节点文本等信息,EXT的`TreeStore`会解析这个JSON数据并填充到TREE中。 最后,...
6. **数据加载与渲染**:EXT JS的Tree组件通常与后端服务进行交互,通过`store`加载树数据。在`TreeCheckNode.js`中,我们可能会看到如何定义`store`以及如何将JSON数据转化为Tree节点的数据模型。 综上所述,"Ext ...
这个工具类的核心功能是获取JSON格式的数据,并将其动态加载到Ext.tree中。 首先,我们需要了解Ext.tree的基本概念。Ext.tree是ExtJS库中的一个组件,它提供了一个可交互的树形视图,允许用户展开、折叠节点以及...
【标题】"ext-tree.rar_ext_ext tr_ext tre_ext.tr_ext.tree" 暗示这是一个关于Ext JS库中TreePanel组件的实例,其中可能包含了用于创建和管理数据结构的树形视图,以及与数据库交互的功能。 【描述】"ext的树的...
- **分页与加载更多**:EXT4.3 grid支持分页,通过`pagingToolbar`配置实现,同时可以设置`loadMore`功能,以便在需要时动态加载更多数据。 3. **表单与grid的结合**: - **联动交互**:在EXT4.3中,表单和grid...
总结,`Ext.Tree.Panel`是EXT JS中构建交互式树形结构的关键组件,通过配置和事件处理可以实现各种复杂的功能,如动态加载数据、拖放操作、自定义样式等。在实际应用中,开发者可以根据需求进行灵活定制,以满足不同...