- 浏览: 342315 次
- 性别:
- 来自: 武汉
最新评论
-
ynymf:
错位问题看这里:http://www.cnblogs.com/ ...
EXTJS制作的嵌套表格实例(点击一行,展开下面的子表) -
xlshlr:
code.php在哪????貌似么有找到这个文件
ExtJS带验证码登录框[新增回车提交] -
langfeng123ac:
二货,这种写法本地又不行,本地有图片,服务器上又没图片。。浪费 ...
JQUERY+ASP.NET的AJAX文件上传(含Demo) -
553718707:
楼主有没有解决方法啊?
EXTJS制作的嵌套表格实例(点击一行,展开下面的子表) -
553718707:
这个代码对于,子表格的列数很多的时候会出现子表格的列与数据行错 ...
EXTJS制作的嵌套表格实例(点击一行,展开下面的子表)
ext
ext异步树加入子节点事件
----------------------------------------------------------------------------------------------
public class SysMenuAction extends BaseAction {
private static final Log log = LogFactory.getLog(SysMenuAction.class);
private SysMenuManager sysMenuManager;
/**
* 如果parentMenuId参数不为空,就返加所有子菜单
*
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public ActionForward getSysMenus(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// 是否有权限
// TODO Auto-generated method stub
// 初始化编码方式和输出流
response.setContentType("text/json; charset=utf-8");
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
// 返回的结果
Map<String, Object> result = new HashMap<String, Object>();
try {
// 取得参数
// TODO Auto-generated method stub
String parentMenuId = request.getParameter("id");
String state = request.getParameter("state");
// 2、取回数据:如果parentMenuId参数不为空就返回parentOrgId下面的所有直接子机构,否则返回所有机构
List<TSysMenu> list = null;
if (state == null || state.length() == 0) {
state = "0";
}
if (parentMenuId == null || parentMenuId.length() == 0
|| parentMenuId.trim().equals("0")) {
TSysMenu obj = sysMenuManager.findSysMenuByTreeCode("0001");
parentMenuId = obj.getMenuId();
}
list = sysMenuManager.findChildrenSysMenus(state, parentMenuId);
// 转换成JSON格式
// 不要转换成对象,要转换成数组
JSONArray jsonArray = new JSONArray();
for (TSysMenu menu : list) {
Map map = new HashMap();
map.put("id", menu.getMenuId());
map.put("text", menu.getMenuName());
map.put("href", menu.getMenuUrl());
if (menu.getIsLeaf().equals("1")) {
map.put("leaf", true);
} else {
map.put("leaf", false);
}
jsonArray.add(map);
}
// 输出到列表
out.print(jsonArray);
return null;
//
} catch (Exception e) {
log.info(e);
result.put("success", false);
result.put("errors", e.toString());
}
return null;
}
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>公司组织架构</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../lib/ext/resources/css/ext-all.css" />
<script type="text/javascript" src="../lib/ext/adapter/ext/ext-base.js">
</script>
<script type="text/javascript" src="../lib/ext/ext-all.js">
</script>
</head>
<script>
var menuUrl = 'http://localhost:8080/XX_BPM_JSP/sysMenus.bpm?method=getSysMenus';
Ext.onReady(function(){
//
//右边具体功能面板区
var contentPanel = new Ext.TabPanel({
region: 'center',
enableTabScroll: true,
activeTab: 0,
items: [{
id: 'homePage',
title: '信息列表',
autoScroll: true,
html: '<div style="position:absolute;color:#ff0000;top:40%;left:40%;">信息列表</div>'
}]
});
//北边,标题栏
var north_item = new Ext.Panel({
title: '公司组织架构',
region: 'north',
contentEl: 'north-div',
split: true,
border: true,
collapsible: true,
height: 50,
minSize: 50,
maxSize: 120
});
//南边,状态栏
var south_item = new Ext.Panel({
title: '版权所有',
region: 'south',
contentEl: 'south-div',
split: true,
border: true,
collapsible: true,
height: 50,
minSize: 50,
maxSize: 120
});
//
//中间的中间,功能菜单
var grid_item = new Ext.Panel({
region: 'west',
el: 'center-center',
title: '功能菜单',
split: true,
collapsible: true,
titlebar: true,
collapsedTitle: '内容',
height: 200,
width: 200,
minSize: 100,
maxSize: 400
});
//中间的南边,信息列表
var center_south_item = new Ext.Panel({
region: 'center',
contentEl: 'center-south',
title: '信息列表',
split: true,
collapsible: true,
titlebar: true,
collapsedTitle: '内容'
});
//中间
var center_item = new Ext.Panel({
region: 'center',
layout: 'border',
// items: [grid_item, center_south_item]
items: [grid_item, contentPanel]
});
//
//西边,后台管理
var managerUrl = "http://www.google.com";
var managerUrlName = "搜索";
var west_item = new Ext.Panel({
title: '后台管理',
region: 'west',
contentEl: 'west-div',
split: true,
border: true,
collapsible: true,
width: 200,
minSize: 120,
maxSize: 200,
layout: "accordion",
layoutConfig: {
animate: true
},
items: [{
title: "系统管理",
html: '<div id="tree"></div>'
}, {
title: "我的任务",
html: '任务'
}, {
title: "流程管理",
html: "流程管理"
}]
});
//布局组合
new Ext.Viewport({
layout: "border",
items: [north_item, south_item, west_item, center_item]
});
//
//设置树形面板
//定义树的根节点
var root = new Ext.tree.AsyncTreeNode({
id: '0',//根节点id
text: '菜单',
expanded: true
//
//
});
//树数据加载
var data = new Ext.tree.TreeLoader({
url: menuUrl
//
});
//生成树形面板
var tree = new Ext.tree.TreePanel({
renderTo: 'tree',
root: root,//定位到根节点
animate: true,//开启动画效果
enableDD: false,//不允许子节点拖动
border: false,//没有边框
rootVisible: true,//设为false将隐藏根节点,很多情况下,我们选择隐藏根节点增加美观性
loader: data
});
//子节点事件
tree.on('click', function(node, event){
//得到节点的href
var href = 'executive.html';
//var href=node.attributes.href;
//
event.stopEvent();
var n = contentPanel.getComponent(node.id);
if (!n) { //判断是否已经打开该面板
n = contentPanel.add({
'id': node.id,
'title': node.text,
closable: true, //通过html载入目标页
//html: '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="executive.html"></iframe>'
html: '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="' + href + '"></iframe>'
});
}
contentPanel.setActiveTab(n);
});
//
});
</script>
<body>
<div id="north-div">
</div>
<div id="south-div">
</div>
<div id="west-div">
</div>
<div id='center-center'>
</div>
<div id='center-south'>
</div>
</body>
</html>
发表评论
-
浅谈Coolite 方法调用
2009-06-13 08:24 2880今天需要做个复选框删除,碰到了一个小难题,然后我一通乱写,居然 ... -
ExtJS Loading 悬浮层
2009-06-08 11:45 4221<!DOCTYPE html PUBLIC &q ... -
Ext中TreePanel控件和TabPanel控件搭配测试
2009-03-23 08:58 2648在实际的项目中,左边树形菜单,提供各种功能点击,右边一个面板, ... -
ExtJs grid使用详细[转]
2009-03-08 21:36 89422008-11-20 09:09 Ext ... -
ExtJS带验证码登录框[新增回车提交]
2009-03-08 21:29 7034/** 用户带验证码登 ... -
ExtJs2.0学习系列(14)--Ext.TreePanel之第三式(可增删改的树)
2009-03-04 19:28 1450继续tree的learn! 今天就来个可增删改的树吧,操作数 ... -
extjs中 combobox级联
2009-03-04 19:13 7337关键字: extjs, combobox, 级 ... -
ext动态新增一行之二
2009-03-03 10:39 1444ext 动态 新增行 新增一行(2)------------- ... -
ext动态新增一行
2009-03-03 10:37 1564ext 动态 新增行 新增一行(1)------------- ... -
ext表单之高级选项
2009-03-03 10:36 1164ext表单之高级选项--------------------- ... -
ext实现标签式浏览内容
2009-03-03 10:31 1510Ext.onReady(function(){ E ... -
实现Ext combox 动态数据加载
2009-03-02 20:37 2480核心代码如下:(注意名称的对应!) 服务器生成的json数据形 ... -
解决TreeNode.reload()失效的办法
2009-03-02 20:36 3882Ext Api文档里面 TreeNode.reload()是没 ... -
Ext2.0的通用grid包括(增、删、改、查、导出excel)
2009-03-02 20:32 2865下面为扩张grid的 代码/** * @a ... -
ext构造自己的组件
2009-03-02 20:16 1333/*** @title:新闻中心模块* @au ... -
Ext.Window
2009-02-28 17:19 2119var winUpload = new Ext.Window( ... -
ExtJs中的树分析及实现
2009-02-27 18:12 2296<网上抄录> 首先我们来看日志分类树,这一部分我将 ... -
扩展EXTJS框架的内容检查
2009-02-27 10:36 1059Ext.apply(Ext.form.VTyp ... -
刚写的B/S高级查询界面(基于ExtJs框架)
2009-02-26 10:16 4178这几天赶着做一个B/S系统,基于ExtJs框架,从中学了不少东 ... -
EXT中也有支持快捷键
2009-02-26 10:00 2393EXT中也有支持快捷键,比如回车,ESC等,你可以通过按钮 ...
相关推荐
在下拉树中,当用户展开树节点时,只加载该节点及其子节点的数据,这减少了初始页面加载时间,提高了用户体验。 核心知识点: 1. **ExtJS TreePanel**:下拉树的基础是TreePanel组件,它是一个显示树形数据结构的...
本文将详细介绍如何在ExtJS中生成树形菜单,并为每个子节点添加链接,以及如何通过点击这些链接触发相应的事件处理或页面跳转。 #### 2. 构建基础环境 为了构建一个能够生成树形菜单的基础环境,我们首先需要引入...
通常,我们会采用异步加载的方式,即每次用户点击某个节点时,后台再生成该节点的子节点,前台再将其加载出来。但是,这种方式有一个缺点,即用户需要等待服务器响应,这会影响用户体验。 那么,有没有一种方法可以...
一个Ext树由节点(Nodes)构成,这些节点可以是叶子节点(没有子节点)或父节点(有子节点)。每个节点都有唯一的标识符,并可以携带额外的数据。节点间的关系通过层级关系建立,形成了树状结构。 创建Ext树的第一...
在这个例子中,当用户点击一个未展开的节点时,`itemclick`事件会被触发,进而调用`store.loadNode(record)`来异步加载子节点。服务器端的`loadSubNodes.php`应返回一个包含子节点数据的JSON对象,其结构为`{nodes: ...
在`ExtJs`中,异步树通过Ajax请求获取子节点数据,仅在需要时才加载,减少了页面初始化时的资源消耗。`EXTJS动态树的实现举例+示例代码.rar`和`Y梨Ext动态树的完整示例代码.rar`等文件提供了实际的实现代码,帮助...
3. **添加根节点**:在TreeLoader中定义根节点,可以是一个空的JSON对象,因为子节点将在异步加载时填充。 4. **将TreeLoader和TreePanel关联**:将创建的`TreeLoader`赋值给`TreePanel`的`loader`属性。 5. **...
对于异步加载,你需要配置树节点的`expandAction`,通常设置为`'load'`,表示展开节点时加载子节点。同时,配置`loader`对象,设置其`url`属性为JSP页面的URL,`dataType`通常为`'json'`,表示数据类型为JSON。 5....
EXT树的每个节点都是一个`Ext.tree.Node`对象,包含ID、文本、子节点等属性。无限级树意味着树的层级可以无限深,每一层都可以有任意数量的子节点。这样的结构在处理大型数据集时尤为有用,因为一次性加载所有数据...
4. **异步加载数据**:当用户展开树形菜单的某个节点时,ZTree会自动触发异步请求,调用DWR中的后台方法获取子节点数据。后台处理完毕后,将结果返回给前端。 5. **接收并渲染数据**:前端接收到数据后,ZTree会...
5. **数据绑定**:树形控件的数据通常是动态加载的,EXT使用Store来管理这些数据,可以与服务器进行异步通信,更新或获取树的结构和状态。 6. **自定义渲染**:EXT允许开发者自定义节点的显示样式和行为,比如通过...
2. **使用NodeInterface**:EXT-js的TreeNode实现了NodeInterface接口,使得每个节点都可以拥有父节点、子节点等属性,方便进行树形结构的操作和遍历。 3. **异步加载**:为了提高性能,通常会使用异步加载技术,只...
7. **异步加载**:对于大数据量的树形菜单,可以采用异步加载策略,只在需要时加载子节点,提高应用性能。 8. **多选与复选**:通过`selModel`配置,你可以实现树形菜单的多选或单选功能,甚至可以添加复选框来支持...
1. **动态加载**:树节点可以按需加载,即只有在用户展开节点时才加载其子节点的数据,这大大提高了页面的加载速度和用户体验。 2. **自定义节点**:你可以通过配置节点属性来自定义节点的显示样式,如图标、文字...
每个节点是一个`Ext.data.Model`对象,包含字段和子节点。例如: ```javascript var treeStore = Ext.create('Ext.data.TreeStore', { model: 'NodeModel', // 自定义的Model,包含节点字段 root: { text: '...
4. 异步加载(Lazy Loading):EXT Tree支持延迟加载,即只有在节点被展开时才加载其子节点数据,这样可以显著减少初次加载的时间。 5. 树形网格(TreeGrid):EXT还提供了结合了表格和树结构的TreeGrid组件,可以...
6. **加载与异步**:树组件可以设置为异步加载,通过配置loadFn或使用Ajax请求加载子节点数据,这样可以提高性能,特别是在处理大量数据时。 7. **监听事件**:EXT提供了丰富的事件系统,如checkchange、itemclick...
5. **事件监听**:Ext JS的树组件提供了丰富的事件,如`itemclick`、`beforeitemexpand`、`itemappend`等,开发者可以监听这些事件进行相应的处理。 6. **拖放操作(Drag and Drop)**:Ext JS的树支持拖放功能,...
通过学习这些代码,你可以理解如何在实际项目中创建并定制树形控件,比如添加自定义节点渲染、拖放功能或异步加载。 5. **示例应用**:提供的例子可能是预览树形控件工作效果的实例,涵盖了基本用法到高级特性的...
- **加载异步数据**:树节点的数据可以动态加载,当用户展开节点时,通过Ajax请求获取子节点数据。 - **自定义节点模板**:通过`viewConfig`中的`tpl`配置项,可以自定义节点的显示样式和内容。 7. **实际应用** ...