树的使用是很频繁的,对树节点的各种操作。和数据库的互动操作。
tree.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<title>树的展示</title>
<!-- Ext -->
<link rel="stylesheet" type="text/css" href="ext4/resources/css/ext-all.css" />
<script type="text/javascript" src="ext4/bootstrap.js">
</script>
<script type="text/javascript" src="ext4/locale/ext-lang-zh_CN.js">
</script>
<!-- tree.jsp page -->
<link rel="stylesheet" type="text/css" href="ext4/ux/css/TabScrollerMenu.css" />
<script type="text/javascript" src="forever.js">
</script>
<script type="text/javascript" src="tree-simple.js">
</script>
<script type="text/javascript" src="tree-check.js">
</script>
<script type="text/javascript" src="tree-app.js">
</script>
</head>
<body>
</body>
</html>
forever.js是工具类:
Ext.ns("org.forever.util");
Ext.define('org.forever.util.TreeUtil', {
extend: 'Object',
userName: '默认值',//属性
constructor: function(config){//构造函数
Ext.apply(this, config);
}
});
//递归更新节点的选中状态
org.forever.util.TreeUtil.updateCheckStatus = function(parentNode, checked){
Ext.each(parentNode.childNodes, function(childNode, index, allItems){
//Ext.Msg.alert('节点信息',node.get('text')+';index=' + index);
childNode.set('checked', checked);
org.forever.util.TreeUtil.updateCheckStatus(childNode, checked);
});
}
tree-app.js是程序的初始化代码:
Ext.Loader.setConfig({
enabled: true
});
Ext.Loader.setPath('Ext.ux', 'ext4/ux/');
Ext.onReady(function(){
var tabscrollermenu = Ext.create('Ext.ux.TabScrollerMenu', {
ptype: 'tabscrollermenu',
maxText: 15,
pageSize: 10
});
var simpleTreePanel = createSimpleTree();
var checkTreePanel = createCheckTree();
var tabPanel = Ext.create('Ext.tab.Panel', {
region: 'center',
activeTab: 1,
plugins: [tabscrollermenu],
items: [simpleTreePanel, checkTreePanel]
});
Ext.create('Ext.Window', {
title: 'tree app',
width: 500,
height: 400,
x: 100,
y: 100,
bodyStyle: 'padding: 5px;',
layout: 'border',
items: [tabPanel]
}).show();
});
tree-simple.js是创建一个简单的树,对节点提取值进行操作。
function createSimpleTree(){
var treeStore;
var treePanel;
var toolbarPanel;
store = Ext.create('Ext.data.TreeStore', {
root: {
expanded: true,
text: "根节点",
children: [{
text: "1-1",
leaf: true
}, {
text: "1-2",
expanded: true,
children: [{
text: "2-1",
leaf: true
}, {
text: "2-2",
leaf: true
}]
}, {
text: "1-3",
leaf: true
}]
}
});
//工具条面板
toolbarPanel = new Ext.panel.Panel({
dockedItems: [{
xtype: 'toolbar',
items: [{
text: '选中节点值',
handler: function(){
var selectionMode = treePanel.getSelectionModel();
var modeType = selectionMode.getSelectionMode();//SINGLE, MULTI or SIMPLE
var selection = selectionMode.getSelection();//获取选中的值
if (selection.length == 1) {
Ext.MessageBox.show({
title: '节点操作',
msg: "选中节点的值:" + selection[0].data.text,
icon: Ext.MessageBox.INFO
});
}
else {
Ext.MessageBox.show({
title: '节点操作',
msg: '没有选中的节点',
icon: Ext.MessageBox.INFO
});
}
}
}]
}]
});
//树面板
treePanel = Ext.create('Ext.tree.Panel', {
title: 'simple-tree',
store: store,
closable: true,
rootVisible: true,//显示根节点
dockedItems: [toolbarPanel],
listeners: {
itemclick: function(view, record, item, index, e){//用了select这个事件不会触发。
Ext.MessageBox.show({
title: '节点操作',
msg: 'itemclick:index=' + index + ",text=" + record.data.text,
icon: Ext.MessageBox.INFO
});
}
}
//renderTo: 'simple-tree-div'//<div id="simple-tree-div"></div>
});
//注册事件操作
treePanel.getSelectionModel().on('select', function(selModel, record){
Ext.MessageBox.show({
title: '节点操作',
msg: 'select:modeType=' + selModel.mode + ",text=" + record.data.text,
icon: Ext.MessageBox.INFO
});
});
return treePanel;
}
tree-check.js是带复选框的树,提取选中的树的值:
function createCheckTree(){
var treeStore;
var treePanel;
var toolbarPanel;
store = Ext.create('Ext.data.TreeStore', {
root: {
checked: false,
expanded: true,
text: "根节点",
children: [{
checked: false,
text: "1-1",
leaf: true
}, {
checked: false,
text: "1-2",
expanded: true,
children: [{
checked: false,
text: "2-1",
leaf: true
}, {
checked: false,
text: "2-2",
children: [{
checked: false,
text: "2-2-1",
leaf: true
}, {
checked: false,
text: "2-2-2",
leaf: true
}]
}]
}, {
checked: false,
text: "1-3",
leaf: true
}]
}
});
toolbarPanel = new Ext.panel.Panel({
dockedItems: [{
xtype: 'toolbar',
items: [{
text: '选中节点值',
handler: function(target, e){
var records = treePanel.getView().getChecked(), names = [];
Ext.Array.each(records, function(rec){
names.push(rec.get('text'));
});
if (records.length > 0) {
Ext.MessageBox.show({
title: 'Selected Nodes',
msg: names.join('<br />'),
icon: Ext.MessageBox.INFO
});
}
else {
Ext.MessageBox.show({
title: '节点操作',
msg: '没有选中的节点',
icon: Ext.MessageBox.INFO
});
}
}
}]
}]
});
treePanel = Ext.create('Ext.tree.Panel', {
title: 'check-tree',
store: store,
animate: true,
closable: true,
rootVisible: true,
dockedItems: [toolbarPanel],
listeners: {
itemclick: function(view, record, item, index, e){
},
checkchange: function(node, checked){
org.forever.util.TreeUtil.updateCheckStatus(node, checked);
}
}
});
return treePanel;
}
- 大小: 14.8 KB
分享到:
相关推荐
在"Extjs 做的treepanel+tab切换页"这个项目中,我们主要关注的是如何利用ExtJS 3.2版本来创建一个具备折叠面板(Collapsible Panel)功能的树形视图(TreePanel),以及与之联动的选项卡(TabPanel)。这个设计允许...
学习TreePanel时根据网上的资料自己实现的实例,结构如下: 1. 创建一棵树 2. 使用TreeLoader加载数据生成树 3. 读取本地Json数据生成树 4. 使用Servlet提供数据 5. 树的事件 6. 右键菜单 7. 修改节点的默认图标 8. ...
在本篇文章中,我们将深入探讨如何在ExtJS框架中获取TreePanel中所有被选中(checked)的叶子节点的ID。此技术对于处理复杂的数据结构、优化用户交互体验以及实现高效的数据管理至关重要。 ### 一、ExtJS简介 ...
完美的Extjs4 treePanel节点刷新,函数为自动刷新选中的节点.API看得头疼才别出来的代码.截止我发之前,好像没有谁共享这个功能的函数吧.
用ExtJS4实现的treepanel与gridpanel的简单互动案例 包含mvc开发模式与普通开发模式两种 普通开发模式:需要在引入js文件夹中的main.js文件 mvc开发模式:需要引入app文件夹中的app.js文件 适合初学extjs4的朋友
主要方法: collapseAll():收缩所有树节点 expandAll():展开所有树节点 getRootNode():获取根节点 getNodeById(String id):获取指定id的节点 expand( [Boolean deep], [Boolean anim],
在学习过程中,理解ExtJS的MVC(Model-View-Controller)架构至关重要,因为TreePanel和GridPanel都是View部分,它们的数据源(Model)和控制器(Controller)是实现功能的关键。同时,熟悉JSON格式数据的处理也是...
TreePanel继承自Panel,在ExtJS中使用树控件含有丰富的属性和方法实现复杂的功能。其中Ext.tree.TreeNode代表一个树节点,比较常用的属性包括text、id、icon、checked等、异步树Ext.tree.AsyncTreeNode、树加载器Ext...
在本文中,我们将探讨ExtJS 4框架中的TreePanel组件如何动态地改变行高。TreePanel是ExtJS中用于展示树形结构数据的组件,它通常用于显示文件系统结构、组织架构等层次化数据。动态改变行高是提高用户界面友好性和...
在EXTJS这个强大的JavaScript框架中,`Ext.Panel`和`TreePanel`是两个非常重要的组件,它们被广泛用于构建复杂的用户界面。这篇文章将探讨如何在这些组件中动态加载本地页面数据,以提升用户体验并实现灵活的数据...
《无废话ExtJs系列教程十五:树:TreePanel》 ExtJs是一个强大的JavaScript库,用于构建富客户端Web应用。在本教程中,我们将深入探讨一个重要的组件——TreePanel,它是ExtJs用来展示层次结构数据的工具,常用于...
EXTJS中的TreePanel是用于展示层级数据的组件,它以树状结构呈现数据。TreePanel提供了丰富的配置项和方法,使得我们可以灵活地控制树的显示和交互。以下是对TreePanel及其主要配置项和方法的详细说明: 1. **主要...
在EXTJS开发中,TreePanel是用于展示层级结构数据的组件,它经常被用来构建文件系统或者组织结构等。在处理TreePanel时,我们可能会遇到一个常见问题:当尝试使用MultiSelectionModel(多选模型)重置选中的节点时,...
根据提供的文件信息,我们可以深入探讨如何在ExtJS4框架中使用MVC2模式下的TreePanel组件结合动态JSON数据实现树形结构的展示与交互。以下将详细解释代码中涉及的关键概念和技术要点: ### 1. 创建TreeStore实例 ...
在ExtJS中,TreePanel是一个组件,用于展示数据的层次结构,类似于文件系统的目录结构。动态生成TreePanel的JSON格式是构建可交互树形结构的关键步骤,特别是当数据需要根据用户操作或服务器响应实时更新时。 在...
ExtJS 是一套用于开发富网络应用的 JavaScript 库,它提供了一套丰富的组件用于构建复杂...对于学习 ExtJS 的开发者来说,掌握 TreePanel 和 CheckBox 的交互逻辑,对于构建复杂用户界面以及提升用户体验是十分重要的。
页面组件示例中心可能包含了一系列EXTJS3.0的组件演示,包括树形组件的实例,你可以通过这些实例学习如何在实际项目中使用和定制EXTJS3.0的树组件,提升你的前端开发能力。 总结来说,EXTJS3.0的树形组件提供了一种...
#### 四、EXTJS底层API与实用工具 **底层API(Core)**提供了对DOM操作、事件处理、DOM查询等功能的封装,是EXTJS框架的基石。这部分功能位于源代码的`core`子目录中,包括`DomHelper.js`、`Element.js`等文件。 *...