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实现flash8类似的连接效果
May 03 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
Sep 19 Javascript
cookie中的path与domain属性详解
Dec 18 Javascript
跟我学习javascript的prototype原型和原型链
Nov 18 Javascript
Laravel中常见的错误与解决方法小结
Aug 30 Javascript
js实现随机抽选效果、随机抽选红色球效果
Jan 13 Javascript
jquery表单插件form使用方法详解
Jan 20 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 Javascript
jquery 实现拖动文件上传加载进度条功能
Mar 18 jQuery
layer提示框添加多个按钮选择的实例
Sep 12 Javascript
Node如何后台数据库使用增删改查功能
Nov 21 Javascript
基于canvasJS在PHP中制作动态图表
May 30 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
PHP伪静态页面函数附使用方法
2008/06/20 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
python利用微信公众号实现报警功能
2018/06/10 Python
python中reader的next用法
2018/07/24 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
Python饼状图的绘制实例
2019/01/15 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
社区优秀志愿者先进事迹
2014/05/09 职场文书
学生党员公开承诺书
2014/05/28 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
nginx访问报403错误的几种情况详解
2022/07/23 Servers