一个可收缩的tabpanel,展开时,个别panel的内容不能100%高度,看以下图点击左边展开区域(注意,不是点击展开按钮),再点击第二个或第三个TAB菜单,高度没有撑满,配置项中有写layout:"fit",但是,如果是点击展开的按钮,确没有这种问题,不知道是不是EXTJS本身的BUG,不知道哪位高人能解决这个问题。以下是全部代码,可以存为HTML文件,打开看效果<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-3.4.0/resources/css/ext-all.css" />
<script type="text/javascript" src="http://extjs.cachefly.net/ext-3.4.0/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="http://extjs.cachefly.net/ext-3.4.0/ext-all.js"></script>
<script type="text/javascript">
Ext.BLANK_IMAGE_URL = 'http://extjs.cachefly.net/ext-3.4.0/resources/images/default/s.gif';Ext.MyWindow=Ext.extend(Ext.Window ,{
xtype:"window",
title:"我的窗口",
width:800,
height:488,
layout:"border",
initComponent: function(){
this.items=[
{
xtype:"panel",
title:"我的面板",
region:"center"
},
{
xtype:"tabpanel",
activeTab:0,
region:"west",
width:400,
split:false,
collapsible:true,
collapsed:true,
items:[
{
xtype:"panel",
title:"分页2",
layout:"form",
labelWidth:40,
items:[
{
xtype:"textfield",
fieldLabel:"标签",
anchor:"100%"
},
{
xtype:"textfield",
fieldLabel:"标签",
anchor:"100%"
},
{
xtype:"textarea",
fieldLabel:"标签",
anchor:"100%"
},
{
xtype:"textarea",
fieldLabel:"标签",
anchor:"100%"
}
]
},
{
xtype:"form",
title:"我的表单",
labelWidth:100,
labelAlign:"left",
layout:"fit",
items:[
{
xtype:"htmleditor",
anchor:"100%",
fieldLabel:"标签",
height:150,
width:300
}
]
},
{
xtype:"panel",
title:"我的面板",
layout:"fit",
items:[
{
xtype:"grid",
title:"我的表格",
store:{
xtype:"arraystore"
},
columns:[
{
header:"Column 1",
sortable:true,
resizable:true,
dataIndex:"data1",
width:100
},
{
header:"Column 2",
sortable:true,
resizable:true,
dataIndex:"data2",
width:100
},
{
header:"Column 3",
sortable:true,
resizable:true,
dataIndex:"data3",
width:100
}
]
}
]
}
]
}
]
Ext.MyWindow.superclass.initComponent.call(this);
}
})Ext.onReady(function() {
var win;
if(!win){
            win = new Ext.MyWindow({
                applyTo:'layout'
            });
        }
        win.show(this);});
</script>
</head>
<body>
<div id="layout"></div>
</body>
</html>

解决方案 »

  1.   

    这应该是个bug,extjs4.1无此问题
    3.4没用过不敢说,去官方论坛问问吧
      

  2.   

    刚才自己测试了下,发现问题可能发生在这里。。
    第四个图,当expand的时候,collapse的那个按钮好似位置不太对
    所以我给你换个方法
    在tab的外面套了一个panel,
    {
        xtype: 'panel',
        title: 'region west panel ',
        region: "west",
        width: 400,
        split: false,                
        collapsible: true,
        collapsed: true,
        layout:'fit',
        items:[tanpanel]  //去掉region,width,collapse等信息
    }
    发现没问题
      

  3.   

    顺手贴个完整代码<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>无标题文档</title>
        <link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-3.4.0/resources/css/ext-all.css" />
        <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.4.0/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.4.0/ext-all.js"></script>
        <script type="text/javascript">
            Ext.BLANK_IMAGE_URL = 'http://extjs.cachefly.net/ext-3.4.0/resources/images/default/s.gif';        Ext.MyWindow = Ext.extend(Ext.Window, {
                xtype: "window",
                title: "我的窗口",
                width: 800,
                height: 488,
                layout: "border",
                initComponent: function () {
                    this.items = [
                {
                    xtype: "panel",
                    title: "我的面板",
                    region: "center"
                },
                {
                    xtype: 'panel',
                    title: 'region west panel',
                    region: "west",
                    width: 400,
                    split: false,
                    collapsible: true,
                    collapsed: true,
                    layout: 'fit',
                    items: [
                      {
                          xtype: "tabpanel",
                          activeTab: 0,
                          items: [
                        {
                            xtype: "panel",
                            title: "分页2",
                            layout: "form",
                            labelWidth: 40,
                            items: [
                                {
                                    xtype: "textfield",
                                    fieldLabel: "标签",
                                    anchor: "100%"
                                },
                                {
                                    xtype: "textfield",
                                    fieldLabel: "标签",
                                    anchor: "100%"
                                },
                                {
                                    xtype: "textarea",
                                    fieldLabel: "标签",
                                    anchor: "100%"
                                },
                                {
                                    xtype: "textarea",
                                    fieldLabel: "标签",
                                    anchor: "100%"
                                }
                            ]
                        },
                        {
                            xtype: "form",
                            title: "我的表单",
                            labelWidth: 100,
                            labelAlign: "left",
                            layout: "fit",
                            items: [
                                {
                                    xtype: "htmleditor",
                                    anchor: "100%",
                                    fieldLabel: "标签",
                                    height: 150,
                                    width: 300
                                }
                            ]
                        },
                        {
                            xtype: "panel",
                            title: "我的面板",
                            layout: "fit",
                            items: [
                                {
                                    xtype: "grid",
                                    title: "我的表格",
                                    store: {
                                        xtype: "arraystore"
                                    },
                                    columns: [
                                        {
                                            header: "Column 1",
                                            sortable: true,
                                            resizable: true,
                                            dataIndex: "data1",
                                            width: 100
                                        },
                                        {
                                            header: "Column 2",
                                            sortable: true,
                                            resizable: true,
                                            dataIndex: "data2",
                                            width: 100
                                        },
                                        {
                                            header: "Column 3",
                                            sortable: true,
                                            resizable: true,
                                            dataIndex: "data3",
                                            width: 100
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                      }
                      }
                }
            ]
                    Ext.MyWindow.superclass.initComponent.call(this);
                }
            })        Ext.onReady(function () {
                var win;
                if (!win) {
                    win = new Ext.MyWindow({
                        applyTo: 'layout'
                    });
                }
                win.show(this);
            });
        </script>
    </head>
    <body>
        <div id="layout">
        </div>
    </body>
    </html>
      

  4.   

    楼上果然是高手,原来是要多套一个panel才行,谢谢了,问题解决,总得来说,这也算是EXTJS自身的一个小BUG