1. Extjs panel 如何隱藏面板內容 只顯示tbar
tabpanel中有兩個GridPanel,在抄火狐下襲沒有問題,在ie下第二個GridPanel就不顯示tbar、bbar
解決:第二個gridPanle設置屬性hidden :true,注釋掉結果正常。
原因:我認為GridPanel中的bbar或者tbar寬度不能夠自適應造成不能show時不顯示
2. [Extjs] 顯示隱藏表單項
表單裡面有很多輸入項,
有時候需要根據前面的選項,
來顯示不同的輸入項,
根據門戶類別來隱藏和顯示界面主題。
因為最外層 class 是 .x-form-item , 通 up 函數,找到對應元素,得到的是一個 Ext.Element 通過函數 setDisplayed 來設置元素的 display 樣式。
Ext.Element 還有 hide() 和 show() 方法,不過 hide 隱藏後,高度不會變化。
另外附加踩過的坑
3. extjs中viewport的顯示和隱藏怎麼做
在VIEWPORT 設置 disabled : true
然後登錄成功後 viewport.setDisabled(false);
我給你建議登錄的時候不要隱藏主面板專了,直接跳轉吧。
登錄頁面屬登錄成功後
window.location.href = 「主頁面地址」;
4. extjs gridPanel隱藏後如何顯示
extjs gridpanel是基於html頁面上的div的,所以控制div隱藏和顯示就好了,在jquery下是這樣的$("#div的id").hide();$("#div的id").show();控制
5. Extjs 如何隱藏控制項之後留下空白,不要被後面的控制項補上
那就別弄一個控制項,弄兩個。一個是你要真正隱藏顯示的控制項,另一個你放一個Label這類的,指定好寬度,並讓text為空,這個控制項顯示著,也是空白。這樣你兩個控制項在一個位置上交替兩個控制項一個顯示一個隱藏,而當label顯示時,也是空,就實現了你要的效果了。
代碼自己寫吧,要是實在不會我再給你弄。
6. extjs 隱藏工具欄
初始化時,設置書號工具欄visible為false,添加高級查找復選框的響應事件,如果選中則顯示書號工具欄。關鍵是在響應函數中,獲取書號工具欄的控制項句柄,可以使用up/down 加組件類型或id來這樣的selector方式獲取。
7. extjs中通過ComboBox 的選擇控制fieldLabel的隱藏和顯示怎麼做
Ext.getCmp('orgBus.feeAmt').labelEl.setVisible(false)
8. extjs頁簽隱藏
varwin=newExt.Window({title:'窗口',width:476,height:374,html:'這里是窗體內容',resizable:true,modal:true,closable:true,maximizable:true,minimizable:true});win.hide();//shwo()為顯示窗體,hide為隱藏窗體。win為定義的窗體對象});
9. ExtJS4如何自動生成控制grid的列顯示、隱藏的checkbox
由於某種原因,需要做一個控制grid列顯示的checkboxgroup,雖然EXTJS4中的gridpanel自帶列表可以來控制列的顯示隱藏,但是有這樣的需求(需要一目瞭然)
下面先上圖
接著前幾天做的工作,今天上午完成了定製欄位,思路是在上面的普通查詢或者高級查詢結束以後,獲得了列的fields,columns等信息,然後交給一個處理函數
makeCustomMadePanel,該函數用來生成checkboxgroup,生成的時候給它加上一個事件,原本以為checkbox會有類似於check的事件,結果API看了看貌似只有個change事件可以用,MD。。
下面貼下自己寫的
makeCustomMadePanel函數。。用來根據grid的列自動生成checkboxgroup(整個grid的標頭內容等信息均從後台得到,不管後台發來一個什麼表,都能生成一個checkboxgroup來控制列的隱藏顯示)
參數分別是gridpanel在reconfigure的時候用到的fields和columns,期中的var
t=grid_a.columnManager.headerCt.items.get(th.itemId);是關鍵。。這句用來獲得grid_a的列信息。。貌似在api中查不到。網上找了幾中方法都不適合。又不想給每個列一個ID。這是在stackoverflow.com/上找到的。。http://stackoverflow.com/questions/20791685/extjs-4-how-do-i-hide-show-grid-columns-on-the-fly
復制代碼
代碼如下:
function
makeCustomMadePanel(fields,cl)
{
var
x=cusMadePanel.getComponent('custom');
//console.log(cusMadePanel.getComponent('custom'));
for(var
i=0;i<fields.length;i++)
{
x.add(
{
xtype
:
'checkboxfield',
boxLabel
:
cl[i].header,
inputValue
:
fields[i].name,
checked:true,
itemId:i,
name
:
'custom',
listeners
:
{
change
:
function(th,
value,
oldValue,eop)
{
var
t=grid_a.columnManager.headerCt.items.get(th.itemId);
if(t.isVisible()){
t.setVisible(false);
}
else{
t.setVisible(true);
}
//grid_a.columns[3].setVisible(false);
}}
}
);
}
}
在給出customMadePanel
復制代碼
代碼如下:
Ext.define('customMadePanel',
{
extend
:
'Ext.form.Panel',
title
:
'定製欄位',
collapsible
:
true,
items
:
[
{
itemId:'custom',
xtype
:
'checkboxgroup',
fieldLabel
:
'選擇欄位',
columns
:
6,
items
:
[]
}]
//collapsed:true,
});
var
cusMadePanel=new
customMadePanel();
我這種做法的不足也很明顯,makeCustomMadePanel函數中的循環生成checkbox組件太耗時了,38個組件足足花了好幾秒。。用戶體驗肯定不好。。
並且目前是在每次查詢完之後都根據查詢的結果生成一遍。。。我再想想好的解決辦法
今天對makeCustomMadePanel做了優化,生成組件的速度與先前相比提升非常明顯!
復制代碼
代碼如下:
function
makeCustomMadePanel(fields,cl)
cusMade=1;
var
x=cusMadePanel.getComponent('custom');
//console.log(cusMadePanel.getComponent('custom'));
var
fie=[];
for(var
i=0;i<fields.length;i++)
{
//x.add(
var
temp=
{
xtype
:
'checkboxfield',
boxLabel
:
cl[i].header,
//inputValue
:
fields[i].name,
checked:true,
itemId:i,
name
:
'custom',
listeners
:
{
change
:
function(th,
value,
oldValue,eop)
{
var
t=grid_a.columnManager.headerCt.items.get(th.itemId);
//console.log(t.isVisible());
//console.log('break');
if(t.isVisible()){
t.setVisible(false);
}
else{
t.setVisible(true);
}
//console.log(t.isVisible());
//var
t1=grid_a.columnManager.headerCt.items.get(th.itemId);
//console.log(t1);
//grid_a.columns[3].setVisible(false);
}}
};
//console.log(temp);
fie.push(temp);
}
//console.log(fie);
x.add(fie);
思路就是先循環組好需要生成的組件對象,然後一次add,每一次add的開銷非常大,變為一次速度真的提升了很多很多~