Extjs中通过Tree加载右侧TabPanel具体实现
来源:互联网 发布:淘宝网小孩玩的挖掘机 编辑:程序博客网 时间:2024/05/16 14:59
Extjs中通过Tree加载右侧TabPanel具体实现
作者: 字体:[增加 减小] 类型:转载 时间:2013-05-05 我要评论
用Extjs4.1来做界面,有关Extjs4.1资料在网上也相对来说较少,下面是具体的实现代码1.左侧的功能树2.需要打开的对应的view,有类似需求的朋友可以参考下哈
<iframe id="iframeu2261530_0" src="http://pos.baidu.com/dcvm?sz=680x200&rdid=2261530&dc=2&di=u2261530&dri=0&dis=0&dai=2&ps=0x0&coa=at%3D3%26rsi0%3D680%26rsi1%3D200%26pat%3D6%26tn%3DbaiduCustNativeAD%26rss1%3D%2523FFFFFF%26conBW%3D1%26adp%3D1%26ptt%3D0%26titFF%3D%2525E5%2525BE%2525AE%2525E8%2525BD%2525AF%2525E9%25259B%252585%2525E9%2525BB%252591%26titFS%3D14%26rss2%3D%2523000000%26titSU%3D0%26ptbg%3D90%26piw%3D0%26pih%3D0%26ptp%3D0&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1468288685621&ti=Extjs%E4%B8%AD%E9%80%9A%E8%BF%87Tree%E5%8A%A0%E8%BD%BD%E5%8F%B3%E4%BE%A7TabPanel%E5%85%B7%E4%BD%93%E5%AE%9E%E7%8E%B0_extjs_%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6&ari=1&dbv=2&drs=1&pcs=1119x785&pss=1119x4779&cfv=0&cpl=4&chi=2&cce=true&cec=GBK&tlm=1466106064&rw=785&ltu=http%3A%2F%2Fwww.jb51.net%2Farticle%2F36430.htm&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=6&col=zh-CN&cdo=-1&tcn=1468288686&qn=a86c9548d1a5d3e9&tt=1468288685601.92.143.143" width="680" height="200" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="display: block; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>
最近在做一个物流管理的项目,公司必须要求用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做出来的效果确实很炫,但是学起来也有一定的难度,特别是比较新的版本,网上很难找到什么好的教程。还好我们有API,可以多对着API中的例子进行练习,这样掌握起来也很快。最近才接触Extjs,希望各位大神不要吐槽!
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做出来的效果确实很炫,但是学起来也有一定的难度,特别是比较新的版本,网上很难找到什么好的教程。还好我们有API,可以多对着API中的例子进行练习,这样掌握起来也很快。最近才接触Extjs,希望各位大神不要吐槽!
0 0
- Extjs中通过Tree加载右侧TabPanel具体实现
- Extjs中通过Tree加载右侧TabPanel具体实现
- Extjs中通过Tree加载右侧TabPanel
- Extjs中通过Tree加载右侧TabPanel
- ExtJs tree tabpanel 布局
- extjs tree激活tabPanel
- Extjs中TabPanel应用
- extjs中treepanel和tabpanel结合实现布局
- extjs中tabPanel的用法
- extjs tabpanel 添加header不能重复加载tabpanel 的问题
- ExtJS中TabPanel用iframe加载其他完整页面的处理方法
- extjs TabPanel
- EXTJS 实现TabPanel 并在各个Tab页中添加js写的panel
- Extjs tabpanel autoload 不能加载样式的问题
- ExtJS 4.1 TabPanel动态加载页面并执行脚本
- 利用ExtJS Tree的TreeNode(Json格式)在Struts 2中实现Ajax真正的动态异步加载树
- 关于ExtJS TabPanel中column布局不显示问题
- ExtJs中tabPanel放置iframe无法兼容IE6的解决方法
- springmvc的web.xml设置拦截所有请求/,关于静态资源访问
- ORM框架-GreenDao
- HUST - 1017 Exact cover DLX解精确覆盖问题题解
- 最新县及县以上行政区划代码(截止2014年10月31日)
- 357. Count Numbers with Unique Digits
- Extjs中通过Tree加载右侧TabPanel具体实现
- ArrayList和LinkedList的区别
- 计算机程序的结构和解释公开课
- 我国在线教育行业现状及布局分析
- vim常用命令总结
- 【笔记】《凤凰项目》读书笔记
- python中if __name__ == '__main__': 的解析
- 实现在父页面不刷新情况下显示子页面传递的信息
- 剑指offer之二维数组中查找一个数