本文的对象是那些ExtJs初学者,为了不耽误您的时间,请误闯者离开亦或是离开
多话不说
ExtJs动态实现树代码,希望能给读者带来帮助...
/** ******************使用panel整个布局使用accordion************************* */
var left = new Ext.Panel({
region : 'west',
id : 'west-panel',
title : '加载中....',
split : true,
width : 200,
minSize : 175,
collapsible : true,
margins : '0 0 0 5',
layout : 'accordion',
layoutConfig : {
animate : true
},
items : [],
listeners : {
// 查询数据动态构造菜单树
'beforerender' : function(evt, element) {
var myajax = Ext.Ajax.request(queryAllConfig(evt,
element));
}
}
});
// 查询所有(进入首页,或刷新,执行一次)
var queryAllConfig = function(evt, element) {
return {
url : 'main/tree/showAll.do',
success : allSCallBack,
failure : allFCallBack,
method : 'post',
// 10秒
timeout : 1000 * 10,
params : {
'data' : new Date()
}
}
}
// 成功回调[全部]
var allSCallBack = function(result, request) {
if (!Ext.isEmpty(result.responseText)) {
var treeList = Ext.util.JSON.decode(result.responseText);
// alert(result.responseText);
if (treeList.length == 0)
left.setTitle('暂无数据');
else {
left.setTitle('功能菜单');
}
for (var i = 0; i < treeList.length; i++) {
var condition = {
'title' : treeList[i].modName,
'parentId' : treeList[i].modId
};
// 构造多个treepanel
var treePanel = new Ext.tree.TreePanel(treePanelConfig(condition));
left.add(treePanel);
}
// 记得最后一次需要重绘
left.doLayout();
left.items.items[0].expand(true);
}
}
// 失败回调[全部]
var allFCallBack = function(result, request) {
}
// 失败回调[部分]
var partFCallBack = function(result, request) {
}
// 构造多个treepanel添加到panel中
var treePanelConfig = function(obj) {
var requestNum = -1;// 保存树上次的请求状态
if (Ext.isEmpty(obj)) {
obj = {
'title' : '暂无数据',
'parentId' : '-1'
};
}
return {
title : obj.title,
autoScroll : true,
animate : true,
border : false,
iconCls : 'settings',// 'settings'
rootVisible : false,
containerScroll : true,
collapsed : true,// 设定全部关闭
// SyncTreeNode instance
loader : new Ext.tree.TreeLoader({
dataUrl : 'main/tree/showPart.do',
listeners : {
'beforeload' : function(treeLoader, curNode) {
this.baseParams.parentId = curNode.attributes.id;
}
}
}),
root : {
nodeType : 'async',
id : obj['parentId'],
expanded : false
},
listeners : {
// 防止用户使劲单击,要对事件进行处理,判断上次的有没有执行完,是继续否返回
'click' : function(n) {
try {
var sn = this.selModel.selNode || {};
if (n.leaf && !n.disabled) {
var nodePanel = tab.getComponent(n.id);
if (!nodePanel) { // 判断是否已经打开该面板
nodePanel = tab.add({
'id' : n.id,
'title' : n.text,
closable : true, // 通过html载入目标页
html : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="'
+ n.attributes.path + '"></iframe>'
});
}
tab.setActiveTab(nodePanel);
} else {
}
} catch (e) {
}
}
}
}
};
PS:var tab = new Ext.TabPanel({
region : 'center',
deferredRender : false,
activeTab : 0,
plugins : new Hs.index.TabCloseMenu(),
resizeTabs : true, // turn on tab resizing
minTabWidth : 115,
tabWidth : 135,
autoDestroy : true,
margins : '0 5 0 0',
enableTabScroll : true,
items : [start]
});
分享到:
相关推荐
- 需要额外添加`jsonplugin-0.34.jar`包,以支持Struts 2 Action返回JSON格式的数据。 2. **实体类设计** - 定义一个通用的实体接口`BaseEntity`,其中包含一个公共方法`getId()`来获取实体的主键ID。 ```java ...
EXTJS4可以通过JSON与服务器端进行数据交换,因此需要Struts2的JSON插件支持,即`struts2-json-plugin-2.3.4.1.jar`,用于处理JSON请求和响应。 【项目搭建步骤】 1. **Eclipse中创建SSH项目**:使用Eclipse创建一...
在整合 Struts2 时,你需要确保添加了必要的依赖库,例如 `struts2-json-plugin-2.1.8.jar`,这个插件允许 Struts2 将结果直接转换为 JSON 格式,便于与 ExtJS 通信。 配置方面,你需在 `web.xml` 文件中设置 ...
- `struts.xml`:配置Struts2的核心配置文件,需要添加JSON插件支持,例如`struts-plugin.xml`,确保Action能够返回JSON格式的数据。 - `struts-default.xml`或自定义的Result类型:配置Action的Result,设置为...
在描述中提到,我们需要将一系列Struts2相关的库文件复制到项目的`WebContent\lib`目录下,包括`struts2-codebehind-plugin-2.1.6.jar`、`struts2-core-2.1.6.jar`、`struts2-spring-plugin-2.1.6.jar`、`xwork-...
在原有的Struts2项目中,除了基本的Struts2库,还需要引入两个额外的jar包:struts2-json-plugin-2.1.8.1.jar和json-lib-2.1.jar。这两个jar包提供了JSON的支持,因为JSON是一种轻量级的数据交换格式,适合于在...
- 特别需要注意的是,除了常规的Struts2 jar包外,还需额外引入`struts2-json-plugin-2.1.8.1.jar`和`json-lib-2.1.jar`两个库。这些库对于实现Struts2与ExtJS之间的数据交换至关重要。 3. **ExtJS资源文件**: -...
在尝试使用EXTJS Tree时,作者遇到了一个问题:EXTJS Tree要求JSON数据以数组形式返回,而Struts2的json-plugin默认生成的是一个JSON对象。例如: ```json // json-plugin生成的数据 { "cls": "folder", "id": 10...
从给定内容中可以看出,Ext JS需要的是一个JSON数组格式,而Struts2 json-plugin默认生成的是一个JSON对象格式。这种格式上的微小差异会导致Ext JS无法正确解析数据,从而不能动态加载树状菜单的数据项。 为解决这...
这通常包括struts2-core、struts2-ext-plugin以及EXT库的相关JAR文件。 2. **添加Struts2和EXT的配置** 在struts.xml配置文件中,你需要定义EXT插件,并指定EXT库的路径。例如: ```xml <constant name="struts....