1. 程式人生 > >Ext.ux.UploadDialog 中底部工具條BottomToolbar 不顯示的問題

Ext.ux.UploadDialog 中底部工具條BottomToolbar 不顯示的問題

最近在做一個檔案批量上傳的功能,用的是EXT中的上傳元件:Ext.ux.UploadDialog (for Ext 2.0) 。程式碼倒是比較簡單,因為是成熟的元件,直接呼叫就行,之前在EXT3.0中測試的時候很正常,但是,到了實際工作的 EXT2.0 中問題就來了,上傳對話方塊彈出之後,下面的工具欄不顯示了,如下圖:


經過一些測試,發現工具欄其實已經載入了,並且,仔細觀察的話,用滑鼠放在底部的位置,也是能看到工具欄按鈕的,只不過被遮住了絕大部分。

這種效果當然是不行的。經過了各種各樣的嘗試、各種各樣的百度和谷歌,甚至嘗試了修改Ext.ux.UploadDialog.js 這個原始檔,無奈水平有限,工具欄還是出不來。

後來,聯想到了工具欄本身的高度(Height)問題,於是在Ext.ux.UploadDialog.js 中修改了一下GridPanel的初始化方法,內容如下:


注意 bbar 這個配置項,new Ext.Toolbar()裡面採用了預設配置,修改一下 bbar 的配置,增加一個指定的高度(經測試,47比較合適),如下圖:


修改完之後,工具欄就顯示出來了~,如下圖:


為了這個問題整整折騰了一天半。。。。

關於這個EXT的底部工具欄,總結一下:

Ext.window 有 bbar 這個配置項,Ext.grid.GridPanel 也有bbar 這個配置項,如果把 bbar 放在 window 中,情況比較簡單,一般不會有問題。而如果把 bbar 放在GridPanel中,然後再把GridPanel放在window中,就可能出現上述的問題。

另外,在EXT3.0和EXT2.0中,工具條也有一些差異,在3.0中應該是改進過的,在聲明瞭 var tb = new Ext.Toolbar()之後,就直接能用 tb.add()方法往工具條中加元素了。

而2.0中如果直接用add()方法就會報錯,提示“this.tr 為空或不為物件”,而要在工具條的父容器載入之後,呼叫父容器的 getBottomToolbar() 方法取得工具條,然後才能用add()方法。