Extjs布局时要注意的地方

时间:2022-10-26 19:35:22

   直接翻的API,虽然API中有写,但我刚开始却没注意到以至后来出现问题头疼半天,最后去查API才看到有,现在翻一下加深印象

  1 使用Border布局的容器必须有一个子件在'中心'区域(region:'center')。中心区域的子件将会自动改变尺寸来填充Border布局中没有被使用的其他区域的空间。(如果不指定会报uncaught exception: No center region defined in BorderLayout XXX异常)
  2 任何west或east区域的子件都必须定义宽度(一个整数代表该区域占用的像素)(如果不指定布局不起作用,并且还会报col is null的错)
  3 任何north或south区域的子件都必须定义高度
  4 Border布局的所有区域在被渲染时以及此之后就固定了,其子组件可能无法删除或添加。
  5 要添加/删除Border布局内的组件,它们必须是被一个额外的由Border布局直接管理的容器所封装。如果该区域是可收起的(collapsible:true),Border布局管理器直接使用的容器应该是一个Panel。

在往window中添加element的时候,需要给element指定region

比如

form = new Ext.FormPanel({
         labelWidth: 80, // label settings here cascade unless overridden
         url:'ext_partnerprofile.php?method=set',
         frame:true,
         title: 'Add a New Partner Profile',
         bodyStyle:'padding:5px 5px 0',
         width: 300,
         defaults: {width: 150},
         defaultType: 'textfield',
         region:'center' ,

.....

}); 
注意,如果在一个tabpanel里掉用了两个相同的组件,那么也会出现uncaught exception: No center region defined in BorderLayout错误。
比如都调用了grid_VacationAll。删除一个后显示正常
var individual_tabPanel = new Ext.TabPanel({
    activeTab: 0,    //设置默认选择的选项卡
    region: 'center',
    items: [
    {
        title: '员工' ,
        border: false,
        layout: 'border',
        autoScroll: true,
        items: [grid_VacationAll]
    },
    {
        title: '公司员工',
        border: false,
        layout: 'border',
        autoScroll: true,
        items: [grid_VacationAll]
    }
    ]
});