`
yiyu
  • 浏览: 187160 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ExtJs树的动态加载

阅读更多
有时候我们不希望一开始就取得整个树的数据然后初始化树,而是希望只取得一小部分数据,随着用户对树的操作,在需要的时候再从服务器取得后续的数据,展现相应的树结构,使用ExtJS的有关组件,我们可以很方便地做到这一步。

客户端的代码如下:
Ext.onReady(function() {
			var root = new Ext.tree.AsyncTreeNode({
						id : "root",
						text : "树的根"
					});

			var loader = new Ext.tree.TreeLoader({
						url : '/extapp/Tree'
					});

			loader.on("beforeload", function(loader, node) {
						loader.baseParams.nodeId = node.id;
					});

			var tree = new Ext.tree.TreePanel({
						renderTo : "tree",
						root : root,
						loader : loader,
						width : 200,
						height : 300
					});
		});


其中:
1 需要动态加载的节点要定义为AsyncTreeNode
2 使用TreeLoader从服务器加载数据,本例中服务器为映射到/extapp/Tree的一个Servlet
3 对TreeLoader添加"beforeload"事件,在每次发起request前,设置一个参数,参数就是loader.baseParams后面定义的nodeId,因为我们要根据不同的节点取得不同的子节点数据,所以把节点的id作为参数传给后台。

后台的servlet的doPost是这样的:
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		StringBuilder sb = new StringBuilder();
		String nodeId = request.getParameter("nodeId");
		if (nodeId != null) {
			if (nodeId.equals("root")) {
				sb.append("[{");
				sb.append("  id: 1,");
				sb.append("  text: '子节点1',");
				sb.append("  leaf: true");
				sb.append("},{");
				sb.append("  id: 2,");
				sb.append("  text: '儿子节点2',");
				sb.append("  leaf: false");
				sb.append("}]");
			} else if (nodeId.equals("2")) {
				sb.append("[{");
				sb.append("  id: 3,");
				sb.append("  text: '孙子节点',");
				sb.append("  leaf: true");
				sb.append("}]");
			}
		}
		PrintWriter out = response.getWriter();
		out.print(sb.toString());
	}


后台很简单:
1 那段延时是为了在前台看出加载等待效果的
2 根据request的参数nodeId的不同,返回不同的子节点数据。当然实际应用当中这些数据一般是根据数据库中的数据生成的,这里略去了。
分享到:
评论
1 楼 hzxlb910 2012-12-14  
[size=medium]我正在学习这方面,遇到很多问题,能否把您的代码发一份给我,谢谢了,409235520@qq.com

相关推荐

    Extjs 动态加载树

    标题“Extjs 动态加载树”涉及到的是一个前端开发技术话题,主要集中在使用Extjs框架构建能够动态加载数据的树形结构。Extjs是一个基于JavaScript的组件化UI库,常用于开发富客户端应用。动态加载树(Dynamic ...

    extjs实现动态树加载菜单

    动态树加载菜单是 ExtJS 中一种常见且实用的功能,它允许用户在需要时按需加载树节点,从而提高应用性能,减少初次加载时的数据量。 动态树加载,也称为懒加载或按需加载,是指在用户滚动、展开节点或执行其他操作...

    extjs实现动态树

    动态树(Dynamic Tree)是指在运行时可以动态加载、添加、删除或更新节点的树形控件。在ExtJS中,这种功能主要通过`Ext.tree.TreePanel`或其现代版本`Ext.tree.View`来实现。 一、ExtJS 动态树基础 1. `Ext.tree....

    extjs 树 搜索

    7. **异步加载**:对于拥有大量子节点的树,EXTJS支持延迟加载或按需加载。只有当用户展开父节点时,才会请求并加载其子节点,这样可以显著提高性能。 8. **搜索性能优化**:在处理大量数据时,可以考虑对树进行...

    EXTJS动态树支持checkbox 全选

    标题中的“EXTJS动态树支持checkbox全选”指的是EXTJS中树组件的一个特性,即在树形结构中添加复选框(checkbox)功能,并支持全选和全取消选中操作。这样的功能对于需要用户进行多项选择的场景非常有用,比如文件...

    ExtJs树例子

    在"ExtJs树例子"这个主题中,我们主要关注的是ExtJS如何实现树形控件(Tree Panel)。 树形控件在Web应用中广泛用于展示层次结构的数据,比如文件系统、组织架构或菜单导航。ExtJS提供了一个完善的TreePanel组件来...

    extjs 动态树及中文API

    在本篇文章中,我们将深入探讨ExtJS中的动态树以及中文API的使用。 动态树的核心在于其数据绑定机制。在ExtJS中,树形控件通常与数据源(如Store)绑定,当数据源发生变化时,树会自动更新。你可以通过Ajax请求获取...

    ExtJS构造动态异步加载

    本文将深入探讨如何使用ExtJS构建动态异步加载的树形结构,结合AJAX技术实现JSON数据的高效传输。 首先,我们要理解什么是动态异步加载。在传统的网页开发中,如果一次性加载所有数据,可能会导致页面加载速度慢,...

    Extjs4动态树的实现

    ExtJS4是一个强大的JavaScript框架,用于构建富客户端应用程序。在这个示例中,我们将探讨如何实现一个动态树结构,其中数据是通过...这种动态加载的方式使得树结构可以根据用户交互灵活地展示数据,提高了用户体验。

    Extjs动态树的实现以及节点拖拽

    在本文中,我们将探讨如何实现ExtJS动态树以及其中的节点拖拽功能。动态树是一种能够实时更新和修改的树形结构,允许用户添加、删除和移动节点。这种功能在各种应用场景中非常有用,如文件系统、组织结构或层级数据...

    ExtJs在struts2.0.x下实现动态树的解决方案

    通过以上步骤,你可以在Struts2.0.x环境中成功实现一个动态的、交互式的ExtJs树结构。这个解决方案不仅适用于基本的树结构展示,还可以扩展到更复杂的业务场景,如权限控制、多级选择等。记得在实际开发中根据项目...

    Extjs树Demo

    通过上述步骤,你可以创建出具有交互性的、动态加载数据的ExtJS树形结构。在实际开发中,还可以结合其他ExtJS组件,如表格、表单等,构建出功能丰富的Web应用。不过,要成为一个熟练的ExtJS开发者,还需要深入理解其...

    EXTJS---完整数据库代码,全网唯一,非常适合EXTJS搭建框架,包含动态树,菜单等

    2. **EXTJS树菜单**: EXTJS中的树菜单(TreeMenu)是TreePanel的一个变体,通常用作下拉菜单。它结合了树的层次结构和菜单的功能,用户可以通过选择不同的菜单节点来执行相应的操作。这种设计使得复杂的操作结构变...

    Extjs 4.2.x MVC 动态加载 controller demo

    demo描述: 1. 页面主框架是左是一个tree,...2. 左边的树是加载主页面的时候动态生成 3. 点击左边的树的节点动态加载controller生成一个table 注:需要自己导入Extjs 4.2.x 的文件,该demo是用Extjs 4.2.1 写的

    Extjs 动态树 数据库

    本项目将详细介绍如何使用ExtJS动态加载树结构,并通过JDBC连接SQL Server数据库获取数据,最终将数据转换为JSON格式以供树结构使用。 首先,让我们了解**ExtJS动态树**的基本概念。动态树(Dynamic Tree)指的是在...

    Extjs4树结构异步加载

    ExtJS4是一款强大的JavaScript框架,用于构建富...通过这样的方式,我们可以构建一个动态、高效的ExtJS4树结构,仅在需要时加载数据,提升用户体验。同时,这种方式也使得开发者能够更好地控制数据流,降低服务器压力。

    tree 动态树 extjs ajax

    在给定的标题和描述中,主要涉及了ExtJS中的动态树(tree)功能以及与AJAX的结合使用。下面将详细介绍这些知识点。 **动态树(Dynamic Tree)** 动态树是ExtJS中的一种控件,用于展示层次结构的数据。它可以实时地...

    用ExtJS实现动态载入树

    ### 使用ExtJS实现动态加载树状结构 #### 数据库背景 为了实现在ExtJS中动态加载树状结构,首先需要创建一个能够存储组织结构信息的数据表。本文将使用Oracle数据库来构建一个简单的组织架构表。 - **表结构**: ...

    extjs动态树struts请求数据

    ExtJS 动态树结构与Struts框架结合,主要用于构建基于Web的动态树形界面,让用户能够以图形化的方式查看和操作层次结构的数据。在这一过程中,Struts作为MVC框架负责后端业务逻辑处理,而ExtJS则作为前端展示库,...

    Extjs入门之动态加载树代码

    通过以上步骤,你可以轻松地为Web应用添加一个动态加载的树形导航菜单,提高用户的使用体验。当然,实际项目中还需要考虑更多的细节问题,例如错误处理、性能优化等,但本文提供了一个良好的起点。

Global site tag (gtag.js) - Google Analytics