Extjs中通過(guò)Tree加載右側(cè)TabPanel具體實(shí)現(xiàn)
1.左側(cè)的功能樹(shù)
Ext.define("AM.view.SystemTree", {
extend : 'Ext.tree.Panel',
alias : 'widget.systemTree',
rootVisible : false,// 不展示ROOT
displayField : 'text',
// title:'物流運(yùn)輸系統(tǒng)',
viewConfig : { // 具有拖拽功能
plugins : {
ptype : 'treeviewdragdrop'
},
listeners : { // 拖拽
drop : function(node, data, overModel, dropPosition, options) {
alert("把: " + data.records[0].get('text') + " 移動(dòng)到: "
+ overModel.get('text'));
}
}
},
dockedItems : [ {
xtype : 'toolbar',
items : [ {
xtype : 'button',
id : 'allopen',
icon : 'resources/img/lock_open.png',
text : '展開(kāi)全部'
}, {
xtype : 'button',
id : 'allclose',
icon : 'resources/img/lock.png',
text : '收起全部'
} ]
} ],
root : {
text : 'root',
leaf : false,
id : '0',
children : [ {
text : '運(yùn)輸管理',
checked : false, // 顯示被選中
leaf : false, // 是否是葉子節(jié)點(diǎn)
icon : 'resources/img/folder_user.png',
id : '01',
children : [ {
text : '車(chē)輛信息管理',
checked : false,
icon : 'resources/img/report_edit.png',
leaf : true,
id : 'vehiclelist', //主要的要點(diǎn)在這里,這里的id要指定為你要打開(kāi)的那個(gè)視圖的別名
}]
}]
}
});
要點(diǎn)介紹:
•tree一定不要忘記添加別名alias
•設(shè)置樹(shù)形結(jié)構(gòu)的子節(jié)點(diǎn)的id值為你需要在右側(cè)顯示的view的別名alias(重要) ------可參考下方的view代碼
2.需要打開(kāi)的對(duì)應(yīng)的view
Ext.define("AM.view.transportation.VehicleList",{
extend:'Ext.grid.Panel',
alias:'widget.vehiclelist', //這里一定要設(shè)置別名
id:'vehiclelist',
store:'VehicleStore',
......中間代碼省略
columns : [
{text:'車(chē)輛編號(hào)',dataIndex:'vehicleNo',
field:{
xtype:'textfield',
allowBlank:false
}
},
{text:'車(chē)輛描述',xtype:'templatecolumn',
tpl:'車(chē)輛的編號(hào)為{vehicleNo} 所在地區(qū)為{vehicleArea}'
}
],
initComponent:function(){
this.callParent(arguments);
}
});
3.建立一個(gè)右側(cè)的TabPanel
Ext.define('AM.view.TabPanel',{ //主頁(yè)面的tab面板
extend: 'Ext.tab.Panel',
alias:'widget.tabpanel',
closeAction: 'destroy',
defaults :{
bodyPadding: 10
},
items: [{
title: '主頁(yè)',
autoLoad:'content.jsp' //只有一個(gè)基本的panel
}],
});
4.設(shè)置點(diǎn)擊tree的觸發(fā)事件
'systemTree':{
itemclick:function(tree,record,item,index,e,options){
var tabs = tree.ownerCt.ownerCt.ownerCt
.child('#center-grid').child("#tabpanel");
//獲取當(dāng)前點(diǎn)擊的節(jié)點(diǎn)
var treeNode=record.raw;
var id = treeNode.id;
var text=treeNode.text;
//獲取點(diǎn)擊的樹(shù)節(jié)點(diǎn)相同的tab標(biāo)簽
var tab = tabs.getComponent(id);
if(!tab){//如果不存在
tabs.add({//用點(diǎn)擊樹(shù)的節(jié)點(diǎn)的ID、text新建一個(gè)tab
id:id,
closable: true,
title:text,
iconCls:id,
xtype:id //將tree設(shè)置好的id對(duì)應(yīng)的TabPanel中去,相當(dāng)與把對(duì)應(yīng)的view填充到TabPanel中
}).show();
}else{//如果存在
tabs.setActiveTab(tab);//Active
}
}
},
結(jié)果上效果圖:

總結(jié):Extjs做出來(lái)的效果確實(shí)很炫,但是學(xué)起來(lái)也有一定的難度,特別是比較新的版本,網(wǎng)上很難找到什么好的教程。還好我們有API,可以多對(duì)著API中的例子進(jìn)行練習(xí),這樣掌握起來(lái)也很快。最近才接觸Extjs,希望各位大神不要吐槽!
相關(guān)文章
extJs 文本框后面加上說(shuō)明文字+下拉列表選中值后觸發(fā)事件
在用extjs做參數(shù)設(shè)置的時(shí)候,想在文本框后加入說(shuō)明子,在網(wǎng)站上走了一大圈還是沒(méi)能找到合適的,小花用了一個(gè)下午的上班時(shí)間終于將這個(gè)頁(yè)面與我想要的功能做出,頁(yè)面很好看與自然,希望網(wǎng)友在用extjs做項(xiàng)目的時(shí)候用的著.2009-11-11extjs表格文本啟用選擇復(fù)制功能具體實(shí)現(xiàn)
extjs提供了方便的表格組件grid供使用,但是默認(rèn)情況下表格中的文本是不能被選中的,自然也是無(wú)法復(fù)制的,下面就為大家介紹下選擇復(fù)制功能如何啟用,感興趣的朋友可以了解下2013-10-10Extjs EditorGridPanel中ComboBox列的顯示問(wèn)題
EditorGridPanel中嵌入ComboBox通常不會(huì)正常顯示ComboBox的store中本想顯示字段,而是顯示的EditorGridPanel中 store的dataindex指定的字段內(nèi)容。2011-07-07ext combox 下拉框不出現(xiàn)自動(dòng)提示,自動(dòng)選中的解決方法
ext combox 如果想實(shí)現(xiàn)類似于 baidu 搜索時(shí)的提示功能。必須禁止其分頁(yè)功能才可以。2010-02-02ExtJs默認(rèn)的字體大小改變的幾種方法(自己整理)
本文列出網(wǎng)上收集的幾種方法,希望對(duì)大家有用,并且做了下瀏覽器兼容,感興趣的朋友可以參考下哈2013-04-04EXT窗口Window及對(duì)話框MessageBox
ExtJS中窗口是由Ext.Window類定義,該類繼承自Panel,因此窗口其實(shí)是一種特殊的面板Panel。窗口包含了浮動(dòng)、可拖動(dòng)、可關(guān)閉、最大化、最小化等特性。2011-01-01extjs關(guān)于treePanel+chekBox全部選中以及清空選中問(wèn)題探討
treePanel+chekBox全部選中以及清空選中,想必大家在學(xué)習(xí)使用過(guò)程中都見(jiàn)過(guò)這種效果吧,接下來(lái)為大家詳細(xì)介紹下實(shí)現(xiàn)過(guò)程及細(xì)節(jié),感興趣的朋友可以參考下哈2013-04-04Extjs學(xué)習(xí)筆記之三 extjs form更多的表單項(xiàng)
本文接著上講Extjs學(xué)習(xí)筆記之二 Extjs之Form介紹Extjs的表單。Extjs除了類似普通的html form的表單項(xiàng)之外,還有一些功能更為豐富實(shí)用的表單項(xiàng)。2010-01-01