① extjs里的treepanel的用法
TreePanel繼承自Panel,在ExtJS中使用樹控制項含有豐富的屬性和方法實現復雜的功能。其中Ext.tree.TreeNode代表一個樹節點,比較常用的屬性包括text、id、icon、checked等、非同步樹Ext.tree.AsyncTreeNode、樹載入器Ext.tree.TreeLoader。下面介紹幾個extjs中treepanel例子:
一、TreePanel基本配置參數:
//TreePanel配置參數
animate:true//展開,收縮動畫,false時,則沒有動畫效果
autoHeight:true//自動高度,默認為false
enableDrag:true//樹的節點可以拖動Drag(效果上是),注意不是Draggable
enableDD:true//不僅可以拖動,還可以通過Drag改變節點的層次結構(drap和drop)
enableDrop:true//僅僅drop
lines:true//節點間的虛線條
loader:Ext.tree.TreeLoader//載入節點數據
root:Ext.tree.TreeNode//根節點
rootVisible:false//false不顯示根節點,默認為true
trackMouseOver:false//false則mouseover無效果
useArrows:true//小箭頭
二、TreeNode的基本配置參數:
//TreeNode常用配置參數
checked:false//true則在text前有個選中的復選框,false則text前有個未選中的復選框,默認沒有任何框框
expanded:fasle//展開,默認不展開
href:"http:/www.cnblogs.com"//節點的鏈接地址
hrefTarget:"mainFrame"//打開節點鏈接地址默認為blank,可以設置為iframe名稱id,則在iframe中打開
leaf:true//葉子節點,看情況設置
qtip:"提示"//提示信息,不過要Ext.QuickTips.init();下
text:"節點文本"//節點文本
singleClickExpand:true//用單擊文本展開,默認為雙擊
三、treepanel實例:
第一個靜態樹--最簡單的樹:
Ext.onReady(function(){
varmytree=newExt.tree.TreePanel({
el:"container",//應用到的html元素id
animate:true,//以動畫形式伸展,收縮子節點
title:"Extjs靜態樹",
collapsible:true,
rootVisible:true,//是否顯示根節點
autoScroll:true,
autoHeight:true,
width:150,
lines:true,//節點之間連接的橫豎線
loader:newExt.tree.TreeLoader(),//
root:newExt.tree.AsyncTreeNode({
id:"root",
text:"根節點",//節點名稱
expanded:true,//展開
leaf:false,//是否為葉子節點
children:[{text:'子節點一',leaf:true},{id:'child2',text:'子節點二',children:[{text:"111"}]}]
})
});
mytree.render();//不要忘記render()下,不然不顯示哦
})
效果圖:
② extJs樹結構展開問題
treepanel:
expandPath ( String path , [ String attr ], [ Function callback ] ) : void
展開當前TreePanel中的指定路徑。可以使用 Ext.data.Node.getPath 方法從一個節點中獲取路徑。
參數:
path : String
attr : String
可選 path中使用的參數(更多信息參見Ext.data.Node.getPath)
callback : Function
可選 展開完成時的回調方法。回調方法將被傳入以下參數: (bSuccess, oLastNode)。 bSuccess是展開是否成功標志,oLastNode為被展開的節點。
返回值:void
getNodeById ( String id ) : Node
根據id從樹中獲取節點
根據id從樹中獲取節點
參數:
id : String
返回值:Node
getRootNode () : Node
返回當前樹的root節點
返回當前樹的root節點
參數:
無。
返回值:Node
treenode:
getPath ( [ String attr ] ) : String
返回當前節點的路徑。該路徑可以用來編程展開或者選中當前節點。
返回當前節點的路徑。該路徑可以用來編程展開或者選中當前節點。
參數:
attr : String
(可選) 路徑使用的參數(默認值為節點的id)
返回值:
String
路徑
把這些方法組合下,然後你在寫點邏輯代碼,就能控制你想展開的任意節點了。
viewTree.expandPath(viewTree.getRootNode().getPath());// 展開根節點
viewTree.expandPath(viewTree.getNodeById (『id』).getPath());// 展開id的那個節點
③ extjs Gridpanel 橫向滾動條後面錯位
建議你把scrollOffset:0, 此屬性去掉,默認就可以!
④ Extjs 3.2版本 formpanel中同時出現橫、豎滾動條,用火狐和谷歌測試時橫向滾動條無法去掉,求指教!
formpanel里的代碼
去掉內autoScroll:true,
修改容bodystyle:'overflow:auto;overflow-x:hidden;overflow-y:auto;border:1px solid #99bbe8;'
⑤ ExtJS:點擊左邊tree菜單,右邊顯示數據
Ext.onReady(function(){
//只給leaf為true的節點加data,否則會與父節點展開事件發生沖突
varstore=Ext.create("Ext.data.TreeStore",{
root:{
expanded:true,
children:[{
text:"detention",
data:"html1.html",
leaf:true
},{
text:"homework",
expanded:true,
children:[{
text:"bookreport",
data:"html2.html",
leaf:true
},{
text:"alegrbra",
data:"html3.html",
leaf:true
}]
},{
text:"buylotterytickets",
data:"html4.html",
leaf:true
}]
}
});
Ext.create("Ext.tree.Panel",{
store:store,
rootVisible:false,
listeners:{
itemclick:function(v,r){
if(r.raw.data){
//獲取節點的data的值
alert(r.raw.data);
}
}
},
renderTo:Ext.getBody()
});
});
在後面的面板中加一個panel,設置其html為
<iframeid="target"style="width:100%;height:100%;border:none;"></iframe>
再修改剛才的itemclick事件
document.getElementById('target').src=r.raw.data;
⑥ extjs怎麼加上滾動條,而且要將分頁的一欄放在頁面的最下面,而不是緊接著數據的最後一條
你用了tbar就沒想到bbar?
dockedItems:[{
xtype:'pagingtoolbar',
store:'QueryFindPointStore',
dock:'bottom',
displayInfo:true,
displayMsg:'顯示 {0} - {1}條記錄,總共 {2}條記錄',
emptyMsg:'暫無數據'
}],
換成
bbar:{
xtype:'pagingtoolbar',
store:'QueryFindPointStore',
displayInfo:true,
displayMsg:'顯示 {0} - {1}條記錄,總共 {2}條記錄',
emptyMsg:'暫無數據'
},
⑦ extjs的panel組件怎麼使用
//html代碼
<div id="container">
</div>
//js代碼
var p = new Ext.Panel({
title: 'My Panel',//標題
collapsible:true,//右上角上的那個收縮按鈕,設為false則不顯示
renderTo: 'container',//這個panel顯示在html中id為container的層中
width:400,
height:200,
html: "<p>我是內容,我包含的html可以被執行!</p>"//panel主體中的內容,可以執行html代碼
});
因為panel組件的子類組件包括TabPanel,GridPanel,FormPanel,TreePanel組件,所以非常有必要介紹Panel組件的配置參數和相關的屬性、方法。
//配置參數(只列舉部分常用參數)
1.autoLoad:有效的url字元串,把那個url中的body中的數據載入顯示,但是可能沒有樣式和js控制,只是html數據
2.autoScroll:設為true則內容溢出的時候產生滾動條,默認為false
3.autoShow:設為true顯示設為"x-hidden"的元素,很有必要,默認為false
4.bbar:底部條,顯示在主體內,//代碼:bbar:[{text:'底部工具欄bottomToolbar'}],
5.tbar:頂部條,顯示在主體內,//代碼:tbar:[{text:'頂部工具欄topToolbar'}],
6.buttons:按鈕集合,自動添加到footer中(footer參數,顯示在主體外)//代碼:buttons:[{text:"按鈕位於footer"}]
7.buttonAlign:footer中按鈕的位置,枚舉值為:"left","right","center",默認為right
8.collapsible:設為true,顯示右上角的收縮按鈕,默認為false
9.draggable:true則可拖動,但需要你提供操作過程,默認為false
10.html:主體的內容
11.id:id值,通過id可以找到這個組件,建議一般加上這個id值
12.width:寬度
13.height:高度
13.title:標題
14.titleCollapse:設為true,則點擊標題欄的任何地方都能收縮,默認為false.
15.applyTo:(id)呈現在哪個html元素裡面
16.contentEl:(id)呈現哪個html元素裡面,把el內的內容呈現
17.renderTo:(id)呈現在哪個html元素裡面
//關於這三個參數的區別(個人認為:applyTo和RenderTo強調to到html元素中,contentEl則是html元素到ext組件中去):
英文如下(本人英語poor,不敢亂翻譯):
contentEl - This config option is used to take existing content and place it in the body of a new panel. It is not going to be the actual panel itself. (It will actually the innerHTML of the el and use it for the body). You should add either the x-hidden or the x-hide-display CSS class to prevent a brief flicker of the content before it is rendered to the panel.
applyTo - This config option allows you to use pre-defined markup to create an entire Panel. By entire, I mean you can include the header, tbar, body, footer, etc. These elements must be in the correct order/hierarchy. Any components which are not found and need to be created will be autogenerated.
renderTo - This config option allows you to render a Panel as its created. This would be the same as saying myPanel.render(ELEMENT_TO_RENDER_TO);
哪位大人幫忙翻譯下...
考慮到入門,方法事件會在以後的文章中以實例穿插。
1.可拖動的panel實例
下面我們做個可拖動panel例子來熟悉下panel這個最基本的組件.
//html代碼
..無..
//下面創建一個允許拖動的panel,但是拖動的結果不能保存
var p=new Ext.Panel({
title: 'Drag me',
x: 100,
y: 100,
renderTo: Ext.getBody(),//x,y,renderTo:Ext.getBody()初始化panel的位置
floating: true,//true
frame: true,//圓角邊框
width: 400,
height: 200,
draggable:true
}).show();//在這里也可以不show()
但是還不能拖到其他的地方,我們需要改寫draggable:
draggable: {
insertProxy: false,//拖動時不虛線顯示原始位置
onDrag : function(e){
var pel = this.proxy.getEl();
this.x = pel.getLeft(true);
this.y = pel.getTop(true);//獲取拖動時panel的坐標
},
endDrag :
function(e){
this.panel.setPosition(this.x, this.y);//移動到最終位置
}
}
實現了可保存的拖動
拖動的時候陰影還在原位置,我們再在draggable中的onDrag事件中添加代碼:
var s = this.panel.getEl().shadow;
if (s) {
s.realign(this.x, this.y, pel.getWidth(), pel.getHeight());
}
//shadow的realign方法的四個參數,改變shadow的位置大小屬性
最後這個可拖動的panel的代碼為:
var p=new Ext.Panel({
title: 'Drag me',
x: 100,
y: 100,
renderTo: Ext.getBody(),
floating: true,
frame: true,
width: 400,
height: 200,
draggable: {
insertProxy: false,
onDrag :
function(e){
var pel = this.proxy.getEl();
this.x = pel.getLeft(true);
this.y = pel.getTop(true);
var s = this.panel.getEl().shadow;
if (s) {
s.realign(this.x, this.y, pel.getWidth(), pel.getHeight());
}
},
endDrag : function(e){
this.panel.setPosition(this.x, this.y);
}
}
})
//效果圖片我就不貼出來了
2.帶頂部,底部,腳部工具欄的panel
var p=new Ext.Panel({
id:"panel1",
title:"標題",
collapsible:true,
renderTo:"container",
closable:true,
width:400,
height:300,
tbar:[{text:"按鈕1"},{text:"按鈕2"}], //頂部工具欄
bbar:[{text:"按鈕1"},{text:"按鈕2"}], //底部工具欄
html:"內容",
buttons:[{text:"按鈕1"},{text:"按鈕2"}] //footer部工具欄
});
我們已經在各種工具欄上添加了按鈕,但是卻沒有激發事件,下面我們來添加按鈕事件代碼:
tbar:[{text:"按鈕1",handler:function(){Ext.MessageBox.alert("我是按鈕1","我是通過按鈕1激發出來的彈出框!")}},{text:"按鈕2"}],
//改寫tbar,添加handler句柄,點擊頂部工具欄上按鈕1,彈出提示框,效果圖大家想像下,就不貼出來了
當然,一般情況下,我們只要一個工具欄,這里只是為了演示!
3.panel工具欄
//添加下面的代碼到panel配置參數中
tools:[{id:"save"},{id:"help"},{id:"up"},{id:"close",handler:function(){Ext.MessageBox.alert("工具欄按鈕","工具欄上的關閉按鈕時間被激發了")}}],
//id控制按鈕,handler控制相應的事件
//id的枚舉值為:
toggle (collapsable為true時的默認值)
close
minimize
maximize
restore
gear
pin
unpin
right
left
up
down
refresh
minus
plus
help
search
save
print
⑧ Extjs怎麼在panel面板裡面設置滾動條
設置scrollable:true.
如果內容超過panel的寬度、高度就會出現滾動條
scrollable : Boolean/String/Object
Configuration options to make this Component scrollable. Acceptable values are:
true to enable auto scrolling.
false (or null) to disable scrolling - this is the default.
x or horizontal to enable horizontal scrolling only
y or vertical to enable vertical scrolling only
Also accepts a configuration object for a Ext.scroll.Scroller if if advanced configuration is needed.
The getter for this config returns the Scroller instance. You can use the Scroller API to read or manipulate the scroll position: