这次能改进,我得写一个人--斌哥。他也是刚开始学JavaScript,加我QQ,我们是这样认识的。parentId
和 node
属性都是他创造的,也是动态异步加载的关键部分之一。这次的改进,我个人认为这应该是动态加载最简洁的做法。如有其它,还望高人指教,Advance in thanks!
欣赏该文章的朋友,我建议先欣赏下面这篇,肯定对你有惊喜。我是在下面这篇实战的基础上实现本文的实战的。
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL = '../ext-2.0.2/resources/images/default/s.gif'; // 根据项目中 s.gif 所在的目录设置
Ext.QuickTips.init();
// shorthand
var Tree = Ext.tree;
var loader = new Tree.TreeLoader({
dataUrl: '' // 可以是 '../admin/dicEmployeeList.action?skey=9039',而不改变该参数,只要在每次调用 Action 之前传入所需的参数
});
// set the root node
var root = new Tree.AsyncTreeNode({
id :'root',
text: 'Root'
,expanded: true
,draggable: false, // disable root node dragging
hrefTarget: 'centerFrame' // Target frame for the link
});
var tree = new Tree.TreePanel({
id :'tree'
,root: root
,rootVisible :false,
autoScroll: true, animate: true,
containerScroll: true, border :false,
enableDD: true,// dropConfig: {appendOnly: true},
margins :'5 5 4 5', title :'ManagerSystem',
loader: loader,
bodyStyle :'background:#fff url(../images/bgImage/treeBg200.gif) repeat-x 0 0;'
});
// root.href = 'userinfo/viewUserInfo.html'; // URL of the link used for this node
var flag = true;
tree.on('beforeload', function(node){
/* dataUrl 可以不用改变 */
if(flag) {
tree.loader.dataUrl = '../admin/dicDepartmentList.action?skey=9039';
flag = false;
} else {
tree.loader.dataUrl = '../admin/dicEmployeeList.action?skey=9039';
}
/* 在 *.js 文件中,往 *.action 中传入参数,可以有多个参数
*/
var submitState = Ext.getCmp('id_SubmitState').getValue();
Ext.apply(this.baseParams, {
submitState
: submitState // 对于红色的 submitState
,
在 Action 类中必须有setSubmitState()函数,
以便Struts 2 的 IoC 容器可以根据设值方法往 Action 中注入
该属性,请看最后部分
......
}
});
tree.addListener('beforeclick', function(node, e){
if(node.isLeaf()) { //否则直接展开
node.expand(false, false);
} else { // 若被选中节点还包含子节点且从未加载过,则增加下一层子节点
// 自动调用 Action
} // if end
}); // addListener end
/*
tree.addListener('load', function(node){
console.log(node); // 在 Firefox 的 Firebug 插件的控制台输出 node 节点信息
});
*/
// 注意:
render 一定要放在 beforeload 事件后面,否则可能得不到你想要的结果
// Important point: Render tree to document body when the code is running here
tree.render(Ext.getBody());
});
在 *.java 文件中的代码如下:
@SuppressWarnings("serial")
public class YearCheckStateInAction extends ActionSupport{
private String submitState;
public String getSubmitState() {
return submitState;
}
public void setSubmitState(String submitState) {
this.submitState = submitState;
}
}
如想要实现像复选框这样的但是只有在叶子节点单选的
,只要稍微改变一下上面代码即可(需要将两篇文章结合):
// TreeNode.
java 文件
public class TreeNode {
// 只要增加该属性即可
private Boolean checked;
}
// 在 ApplyFormAction.
java 文件的 viewAsTreeByAdmin() 函数中增加一下代码即可:
treeNode.setChecked(true); // 针对叶子节点
// treeNode.setChecked(true); // 针对非叶子节点
// js 文件,这是为了在前台实现单选功能用
var preId = null;
listeners: {
'checkchange': function(node, checked) {
if(preId !== null)
node.parentNode.findChild('id', preId).ui.toggleCheck(!checked);
preId = node.id;
}
}
大功告成!
版权声明:
如果大家要转载本文,我非常荣幸。但请参加转载网址,谢谢!
分享到:
相关推荐
在本文中,我们将深入探讨如何使用ExtJS框架的Tree组件,结合JSON数据格式以及Struts 2框架,来实现Ajax动态加载树形结构的节点。这是一项常见的需求,特别是在构建可扩展、用户友好的Web应用时,动态加载的树结构...
在本文中,我们将探讨如何结合 ExtJS、JSON 和 Struts2 实现一个动态加载的树形菜单。ExtJS 是一个流行的 JavaScript 框架,用于构建富客户端应用,它支持多种数据源,包括 JSON。Struts2 是一个 Java Web 开发框架...
ExtJS Tree + JSON + Struts2 示例源代码是结合了三种技术来实现一个动态的、交互式的树形数据展示的应用。这个示例中,ExtJS用于前端UI的构建,JSON作为数据交换格式,而Struts2则作为后端MVC框架处理请求和返回...
4. **AJAX 技术**: 在这个项目中,ExtJS Tree 可能使用 AJAX(Asynchronous JavaScript and XML)技术异步地从服务器获取 JSON 数据,这使得用户无需刷新整个页面就能更新树视图。通过 `Ext.Ajax.request` 或者 `Ext...
本示例将详细介绍如何结合ExtJS的Tree组件、JSON数据格式以及Struts2框架,构建一个动态的树形结构展示系统。 首先,我们要理解ExtJS Tree组件。它是一种可扩展的树状视图,用于展示层次结构的数据。在ExtJS中,...
在 ExtJS Tree 中实现异步加载,主要涉及以下几个关键点: 1. **TreeStore**:存储树节点数据的模型,可以配置 `proxy` 来指定数据来源。对于异步加载,一般使用 `ajax` 类型的 proxy,并设置 `url` 参数指向服务器...
本文将深入探讨如何使用ExtJS构建动态异步加载的树形结构,结合AJAX技术实现JSON数据的高效传输。 首先,我们要理解什么是动态异步加载。在传统的网页开发中,如果一次性加载所有数据,可能会导致页面加载速度慢,...
在Struts2框架中,我们通常通过Action类处理用户的请求,并返回JSON或XML数据,这些数据将在前端被解析并用于更新树结构。Struts2与ExtJs的结合,可以通过Struts2的插件如Struts2-ExtJS-plugin或者自定义结果类型来...
标题 "extjs 跟 struts+json" 暗示了本文将探讨如何使用ExtJS框架与Struts框架结合,通过JSON数据格式进行交互。ExtJS是一个强大的JavaScript库,用于构建富客户端Web应用程序,而Struts是Java Web开发中的一个MVC...
例如,Ext.tree.Panel可能会通过Ajax请求从服务器获取JSON格式的树结构数据,然后动态渲染出树形视图。 Ext.tree.Panel是ExtJS中的一个组件,用于展示树状数据结构。它可以显示多级嵌套的节点,支持拖放操作,节点...
在ExtJS Tree中实现动态加载,主要涉及以下几个关键概念: 1. **TreeStore**: TreeStore是ExtJS Tree的数据源,负责管理树节点的数据。它可以配置为从服务器异步获取数据,通过`proxy`配置项来指定数据源类型,通常...
在ExtJS动态树中,Struts需要将后端数据转化为JSON格式,以便前端解析。JSON对象通常包含键值对,数组和嵌套的对象,可以方便地表示复杂的数据结构。 3. **Struts2 Action和Result**: 在Struts2框架中,Action类是...
ExtJS AJAX Tree是一种基于JavaScript的动态树形结构,它利用AJAX技术来异步加载节点数据,无需在服务器端生成完整的树结构。这种方式可以显著提高页面加载速度,尤其是在处理大量数据时。ExtJS是一个功能丰富的...
在这个示例中,前端使用Extjs发送请求到后端,后端通过Struts2处理请求并获取数据,最终将数据转换为JSON格式返回给前端。这符合现代Web应用的数据交互标准。 ### 5. Java Action类实现 #### 知识点概述: Action...
动态树通常通过Ajax请求来获取并填充数据,从而实现异步加载,提高页面性能。这种特性使得树结构在不阻塞用户界面的情况下,能够逐步加载子节点,减少了初次加载时的数据量。 **ExtJS TreePanel** 在ExtJS中,动态...
在IT行业中,构建Web应用程序是常见的任务,而“ExtJS4+JSON+Servlet(Struts2)实现登录验证”是一个典型的前端与后端交互的场景。这个主题涉及到几个关键的技术点,我们将逐一深入探讨。 首先,ExtJS4是一个流行的...
在这个“struts2与extjs tree的完美结合”的示例中,开发者利用了Struts2的Annotation特性来简化配置,以及Struts2JSON插件来处理JSON数据,从而实现在服务器端动态生成和返回Tree节点。Annotation使得开发者能够在...
在ExtJS4中实现树结构的异步加载,主要涉及以下几个关键概念: 1. **TreeStore**: TreeStore是树结构的数据源,它负责管理与服务器之间的数据通信。对于异步加载,我们需要配置TreeStore,设置`autoLoad`为`false`...
在前端,EXTJS使用Ajax请求调用Struts2 Action,接收返回的JSON数据,然后动态渲染UI,展示所有订单及其对应的客户信息。 总结来说,ExtJs + Struts2 + JSON 的组合提供了一种高效、灵活的方法来构建富客户端Web...