ExtJs TabPanel 中嵌入表单和表格, 页面初始化时能够正常显示, 但是切换选项卡后没有显示, 求助?

功能需求如下:
ExtJs(v3.1) 框架, TabPanel 需要 2 个 tab, 每个 tab 中分别嵌入一个表单(FormPanel)和一个表格(GridPanel), 表单用于查询条件, 表格用于数据展示, 页面初始化时每个 tab中的表单和表格都能够正常显示出来, 但是切换 tab 选项卡后, 表格没有显示, 表单上面的查询按钮也没有显示, 只剩下表单的输入框可以正常显示, 希望遇到过类似问题的朋友帮忙一下!

下面给出 tab1 的表单和表格的代码

// 表格
var draft_qForm = new Ext.form.FormPanel({
    id:'draft_qForm',
    region : 'north',
    margins : '3 3 3 3',
    title : '<span class="commoncss">查询条件<span>',
    collapsible : false,
    border : false,
    labelWidth : 50, // 标签宽度
    labelAlign : 'right', // 标签对齐方式
    bodyStyle : 'padding:3 5 0', // 表单元素和表单面板的边距
    buttonAlign : 'center',
    height : 130,
    items : [{
        layout : 'column',
        border : false,
        items : [{
                    columnWidth : .30,
                    layout : 'form',
                    labelWidth : 80, 
                    defaultType : 'textfield',
                    border : false,
                    items : [{
                                fieldLabel : '姓名', 
                                id : 'name',
                                name : 'username', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            },{
                                fieldLabel : '客服', 
                                id : 'service',
                                name : 'service', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            }]
                },{
                    columnWidth : .30,
                    layout : 'form',
                    labelWidth : 80, 
                    defaultType : 'textfield',
                    border : false,
                    items : [{
                                fieldLabel : '手机号', 
                                id : 'account',
                                name : 'account', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            },{
                                fieldLabel : '业务员', 
                                id : 'salesmanname',
                                name : 'salesmanname', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            }]
                },{
                    columnWidth : .30,
                    layout : 'form',
                    labelWidth : 80, 
                    defaultType : 'textfield',
                    border : false,
                    items : [{
                                fieldLabel : '公司', 
                                id : 'companyname',
                                name : 'companyname', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            },{
                                fieldLabel : '主帐号', 
                                id : 'mainuser',
                                name : 'mainuser', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            }]
                },{
                    columnWidth : .30,
                    layout : 'form',
                    labelWidth : 80, 
                    defaultType : 'textfield',
                    border : false,
                    items : []
                }]
                
    }],
    buttons : [{
        text : '查询',
        iconCls : 'previewIcon',
        handler : function() {
            queryExtuser();
        }
    }, {
        text : '重置',
        iconCls : 'tbar_synchronizeIcon',
        handler : function() {
            draft_qForm.getForm().reset();
        }
    }]
});
// 表格实例
var draft_grid = new Ext.grid.GridPanel({
    title : '<span class="commoncss">订舱单列表</span>', // 表格面板标题,默认为粗体,我不喜欢粗体,这里设置样式将其格式为正常字体
    height : document.body.clientHeight/2 * 1.5,
    id : 'id_grid_ddlb',
    autoScroll : true,
    frame : true,
    region : 'center', // 和VIEWPORT布局模型对应,充当center区域布局
    margins : '3 3 3 3',
    store : draft_store, // 数据存储
    stripeRows : true, // 斑马线
    cm : draft_sm, // 列模型
    tbar : draft_tbar, // 表格工具栏
    bbar : draft_bbar,// 分页工具栏
    viewConfig : {
        forceFit:true 
    },
    loadMask : {
        msg : '...正在加载表格数据,请稍等...'
    }
});

下面给出 tab2 的表单和表格的代码

// 表单
var public_qForm = new Ext.form.FormPanel({
    id:'public_qForm',
    region : 'north',
    margins : '3 3 3 3',
    title : '<span class="commoncss">查询条件<span>',
    collapsible : false,
    border : false,
    labelWidth : 50, // 标签宽度
    labelAlign : 'right', // 标签对齐方式
    bodyStyle : 'padding:3 5 0', // 表单元素和表单面板的边距
    buttonAlign : 'center',
    height : 130,
    items : [{
        layout : 'column',
        border : false,
        items : [{
                    columnWidth : .30,
                    layout : 'form',
                    labelWidth : 80, 
                    defaultType : 'textfield',
                    border : false,
                    items : [{
                                fieldLabel : '姓名', 
                                id : 'public_name',
                                name : 'username', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            },{
                                fieldLabel : '客服', 
                                id : 'public_service',
                                name : 'service', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            }]
                },{
                    columnWidth : .30,
                    layout : 'form',
                    labelWidth : 80, 
                    defaultType : 'textfield',
                    border : false,
                    items : [{
                                fieldLabel : '手机号', 
                                id : 'public_account',
                                name : 'account', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            },{
                                fieldLabel : '业务员', 
                                id : 'public_salesmanname',
                                name : 'salesmanname', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            }]
                },{
                    columnWidth : .30,
                    layout : 'form',
                    labelWidth : 80, 
                    defaultType : 'textfield',
                    border : false,
                    items : [{
                                fieldLabel : '公司', 
                                id : 'public_companyname',
                                name : 'companyname', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            },{
                                fieldLabel : '主帐号', 
                                id : 'public_mainuser',
                                name : 'mainuser', 
                                maxLength : 50, 
                                anchor : '100%'
                                
                            }]
                },{
                    columnWidth : .30,
                    layout : 'form',
                    labelWidth : 80, 
                    defaultType : 'textfield',
                    border : false,
                    items : []
                }]
                
    }],
    buttons : [{
        text : '查询',
        iconCls : 'previewIcon',
        handler : function() {
            //queryExtuser();
        }
    }, {
        text : '重置',
        iconCls : 'tbar_synchronizeIcon',
        handler : function() {
            public_qForm.getForm().reset();
        }
    }]
});
// 表格实例
var public_grid = new Ext.grid.GridPanel({
    title : '<span class="commoncss">订舱单列表</span>', // 表格面板标题,默认为粗体,我不喜欢粗体,这里设置样式将其格式为正常字体
    height : document.body.clientHeight/2 * 1.5,
    id : 'id_public_grid',
    autoScroll : true,
    frame : true,
    region : 'center', // 和VIEWPORT布局模型对应,充当center区域布局
    margins : '3 3 3 3',
    store : public_store, // 数据存储
    stripeRows : true, // 斑马线
    cm : public_sm, // 列模型
    tbar : public_tbar, // 表格工具栏
    bbar : public_bbar,// 分页工具栏
    viewConfig : {
    },
    loadMask : {
        msg : '...正在加载表格数据,请稍等...'
    }
});

下面是 tabPanel 的代码

var draftTab = new Ext.Panel({
           id : "id_booking_draft",
        title : '<img src="/resource/image/ext/image.png" align="top" class=""> 草 稿',
        items:[draft_qForm,draft_grid]
    });
    
   var publicTab = new Ext.Panel({
           id : "id_booking_public",
        title : '<img src="/resource/image/ext/layout_content.png" align="top" class=""> 发 布 中',
        items:[public_qForm, public_grid]
    });
    
    
    var tabPanel = new Ext.TabPanel({  
         renderTo: "id_tabpanel_draft", 
         activeTab: 0, 
         plain : true,  
         //border: false,
         //deferredRender: false,
         //layoutOnTabChange : true,
         //region : "center", 
         items:[draftTab,publicTab]
     }); 

下面是初始化时的图片和切换选项卡后的图片
图片描述

图片描述

说明:
1 通过浏览器的开发人员工具来查看, 没有报错.
2 通过开发人员工具来查看, 切换选项卡后可以查看到表格元素还存在.
3 ExtJs 版本号是 3.1

遇到过类似问题的朋友请帮忙解决下, 兄弟我先多谢了!

阅读 4.6k
1 个回答

问题已经解决, 没有显示出来的原因是, tab 的高度发生变化, 导致tab里面的元素没有显示完整, 我处理的办法是, 在切换选项卡的时候, 重新设置 tab 的高度就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进