功能:在TabPanel里通过this.add()方法加载一个子Tab(子Tab中包含一个formPanel和GridPanel)
子Panel的代码如下:
[code="javaScript"]
TabPanel=Ext.extend(Ext.Panel ,{
// xtype:"panel",
closable: true,
// layout: "anchor",
// layout: "border",
// layout: "absolute",
// layout: "column",
layout: "form",
// layout: "hbox",
// layout: "menu",
// layout: "toolbar",
// layout: "auto",
title:"分页2",
initComponent: function(){
this.items = [
new Ext.SearchCondition(),
new TestGrid()
]
TabPanel.superclass.initComponent.call(this);
}
});
[/code]
现在的问题是子Panel的formPanel(Ext.SearchCondition)部分无法显示出来,当IE窗口大小有变化时,这块就显示出来了??!!
经过测试如果不加载到父TabPanel中,这部分是能够正常显示的。。
以前也遇到类似无法显示的问题,最后原因是layout没有设置对,于是这次我把所有的layout都试了一遍,但是还是没有解决。。
在你的tabPanel定义时,添加这句代码:
layoutOnTabChange : true,
其实解决的办法很简单,重写构造函数如下:
constructor:function(){
var config=Ext.apply({
//把layout相关的配置都配置到这里
},arguments);
TabPanel.superclass.constructor.call(this,config);
}
这个是因为容器布局的时候读的是传入的直接量对象,而不是通过读this上的属性
哦 我知道了 用完add方法添加组件必须再执行一下layout函数 API上写得很清楚啊!
你在add方法之后要写一个TabPanel.doLayout()就行了