Extjs中通过Tree加载右侧TabPanel具体实现


Posted in Javascript onMay 05, 2013

最近在做一个物流管理的项目,公司必须要求用Extjs4.1来做界面,因为以前一直也没有接触过所以开发的过程中遇到了很多的困难。同时Extjs4.1的资料在网上也相对来说较少。好了,不说废话上代码:
1.左侧的功能树

Ext.define("AM.view.SystemTree", { 
extend : 'Ext.tree.Panel', 
alias : 'widget.systemTree', 
rootVisible : false,// 不展示ROOT 
displayField : 'text', 
// title:'物流运输系统', 
viewConfig : { // 具有拖拽功能 
plugins : { 
ptype : 'treeviewdragdrop' 
}, 
listeners : { // 拖拽 
drop : function(node, data, overModel, dropPosition, options) { 
alert("把: " + data.records[0].get('text') + " 移动到: " 
+ overModel.get('text')); 
} 
} 
}, 
dockedItems : [ { 
xtype : 'toolbar', 
items : [ { 
xtype : 'button', 
id : 'allopen', 
icon : 'resources/img/lock_open.png', 
text : '展开全部' 
}, { 
xtype : 'button', 
id : 'allclose', 
icon : 'resources/img/lock.png', 
text : '收起全部' 
} ] 
} ], 
root : { 
text : 'root', 
leaf : false, 
id : '0', 
children : [ { 
text : '运输管理', 
checked : false, // 显示被选中 
leaf : false, // 是否是叶子节点 
icon : 'resources/img/folder_user.png', 
id : '01', 
children : [ { 
text : '车辆信息管理', 
checked : false, 
icon : 'resources/img/report_edit.png', 
leaf : true, 
id : 'vehiclelist',//主要的要点在这里,这里的id要指定为你要打开的那个视图的别名 
}] 
}] 
} 
});

要点介绍
•tree一定不要忘记添加别名alias
•设置树形结构的子节点的id值为你需要在右侧显示的view的别名alias(重要) ------可参考下方的view代码
2.需要打开的对应的view
Ext.define("AM.view.transportation.VehicleList",{ 
extend:'Ext.grid.Panel', 
alias:'widget.vehiclelist', //这里一定要设置别名 
id:'vehiclelist', 
store:'VehicleStore', 


......中间代码省略 
columns : [ 
{text:'车辆编号',dataIndex:'vehicleNo', 
field:{ 
xtype:'textfield', 
allowBlank:false 
} 
}, 
{text:'车辆描述',xtype:'templatecolumn', 
tpl:'车辆的编号为{vehicleNo} 所在地区为{vehicleArea}' 
} 
], 
initComponent:function(){ 
this.callParent(arguments); 
} 
});

3.建立一个右侧的TabPanel
Ext.define('AM.view.TabPanel',{ //主页面的tab面板 
extend: 'Ext.tab.Panel', 
alias:'widget.tabpanel', 
closeAction: 'destroy', 
defaults :{ 
bodyPadding: 10 
}, 
items: [{ 
title: '主页', 
autoLoad:'content.jsp'
//只有一个基本的panel 
}], 
});

4.设置点击tree的触发事件
'systemTree':{ 
itemclick:function(tree,record,item,index,e,options){ 
var tabs = tree.ownerCt.ownerCt.ownerCt 
.child('#center-grid').child("#tabpanel"); 
//获取当前点击的节点 
var treeNode=record.raw; 
var id = treeNode.id; 
var text=treeNode.text; 
//获取点击的树节点相同的tab标签 
var tab = tabs.getComponent(id); 
if(!tab){//如果不存在 
tabs.add({//用点击树的节点的ID、text新建一个tab 
id:id, 
closable: true, 
title:text, 
iconCls:id, 
xtype:id//将tree设置好的id对应的TabPanel中去,相当与把对应的view填充到TabPanel中 
}).show(); 
}else{//如果存在 
tabs.setActiveTab(tab);//Active 
} 
} 
},

结果上效果图:
Extjs中通过Tree加载右侧TabPanel具体实现
总结:Extjs做出来的效果确实很炫,但是学起来也有一定的难度,特别是比较新的版本,网上很难找到什么好的教程。还好我们有API,可以多对着API中的例子进行练习,这样掌握起来也很快。最近才接触Extjs,希望各位大神不要吐槽!
Javascript 相关文章推荐
jquery插件制作 手风琴Panel效果实现
Aug 17 Javascript
用js获取电脑信息(是使用与IE浏览器)
Jan 15 Javascript
JS动态添加option和删除option(附实例代码)
Apr 01 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
Sep 29 Javascript
JavaScript删除数组元素的方法
Mar 20 Javascript
jQuery实现类似老虎机滚动抽奖效果
Aug 06 Javascript
Easyui 之 Treegrid 笔记
Apr 29 Javascript
js基础之DOM中元素对象的属性方法详解
Oct 28 Javascript
基于JavaScript实现类名的添加与移除
Apr 23 Javascript
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
详解express使用vue-router的history踩坑
Jun 05 Javascript
原生js实现自定义消息提示框
Nov 19 Javascript
jquery高效反选具体实现
May 05 #Javascript
Jquery为a标签的href赋值实现代码
May 03 #Javascript
5秒后跳转效果(setInterval/SetTimeOut)
May 03 #Javascript
如何用JavaScript动态呼叫函数(两种方式)
May 03 #Javascript
jquery移动listbox的值原理及代码
May 03 #Javascript
使用Java实现简单的server/client回显功能的方法介绍
May 03 #Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
May 03 #Javascript
You might like
层叠菜单的动态生成
2006/10/09 PHP
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
js实现拖拽效果
2015/02/12 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
微信小程序实现电子签名功能
2020/07/29 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
Python编程之序列操作实例详解
2017/07/22 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
Python实现微信好友的数据分析
2019/12/16 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
环保倡议书
2014/04/14 职场文书
电气工程师岗位职责
2015/02/12 职场文书
班主任自我评价范文
2015/03/11 职场文书
辩论会主持词
2015/07/03 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python