作者: Jet Mah from Java堂
聲明: 可以非商業性任意轉載, 轉載時請務必以超鏈接形式標明文章原始出處、作者信息及此聲明!
在ExtJS中實現多行工具欄的效果
hack code:
- /**
- * ExtJS hack: Add multiple toolbars to a Panel
- *
- * @author Jet Ma (jetmah(at)gmail(dot)com)
- */
- // 將原來的onRender方法進行重定義,以免造成遞歸調用!
- // rename the original onRender method to avoid call itself
- Ext.Panel.prototype.originalonRender = Ext.Panel.prototype.onRender;
- // 擴展onRender方法,實現在Toolbar中增加多行
- // override onRender method
- Ext.Panel.prototype.onRender = function(ct, position) {
- this.originalonRender(ct, position);
- // 增加使用rowtbar添加換行的Toolbar
- // use the custom rowtbar argument to add it to this TopToolbar
- if(this.tbar && this.rowtbar){
- var rowtbar = this.rowtbar;
- if(!Ext.isArray(rowtbar))
- return;
- for(var i = 0; i < rowtbar.length; i ++) {
- new Ext.Toolbar(rowtbar[i]).render(this.tbar);
- }
- }
- // 增加使用rowbbar添加換行的Bottombar
- // use the custom rowbbar argument to add it to this BottomToolbar
- if(this.bbar && this.rowbbar) {
- var rowbbar = this.rowbbar;
- if(!Ext.isArray(rowbbar))
- return;
- for(var i = 0; i < rowbbar.length; i ++) {
- new Ext.Toolbar(rowbbar[i]).render(this.bbar);
- }
- }
- }
usage:
- var panel = new Ext.Panel({
- //...
- tbar: [{text: 'button one'}, {text: 'button two'}],
- rowtbar: [
- [{text: 'row1 buttone 1'}, {text: 'row1 button2'}],
- [{text: 'row2 buttone 1'}, {text: 'row2 button2'}]
- ],
- bbar: [{text: 'button one'}, {text: 'button two'}],
- rowbbar: [
- [{text: 'row1 buttone 1'}, {text: 'row1 button2'}],
- [{text: 'row2 buttone 1'}, {text: 'row2 button2'}]
- ]
- });
screenshot:
more discussion: http://www.extjs.com/forum/showthread.php?t=94762