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的开销非常大,变为一次速度真的提升了很多很多~