1

我有一个边框布局,我必须在其中展开和折叠东部区域以获得某些视图,屏幕在开始时工作正常,但是当您单击浏览器的刷新按钮并且如果东部区域折叠时,那么您得到了东部区域崩溃了,根据我的理解,这不应该发生,因为每次刷新时都会从头开始执行 extJS 代码,因此东部区域在刷新后必须可见。

为了使每次用户刷新时东部区域都扩大,我尝试了以下操作

    Ext.getCmp('center_panel').add({
        id: 'center_panel_container',
        layout: 'border',
        defaults: {
        'border': true
        },    
        items:[{
           id : 'header_panel',
           layout: 'fit',
           region: 'north',
           height: 30,
           items: [tbar]
        },{
           id: 'master_panel',
           layout: 'fit',
           region: 'center',
           width: '60%',
           bodyStyle:{"background-color":"white"},
           autoScroll: true,
           items: [panelLeft,panelLeftSchd,panelLeftStartUp]
        }, {
           id: 'report_panel',
           layout: 'fit',
           region: 'east',
           width : '40%',
           split:true,
           autoScroll: true,
           items: [panelRight,  panelRightStartUp]
    }]   
 });
        Ext.getCmp('report_panel').expand(true);

但我收到以下错误this.el is null or not an object

每次用户点击刷新时如何使东部区域扩大

谢谢,

4

2 回答 2

3

发生这种情况是因为Ext.getCmp('report_panel')在您尝试调用其 expand 方法时未呈现。setTimeout那是因为 Ext-JS在布局组件时有时会使用 a 。最简单的解决方案是等待渲染事件并从该处理程序调用扩展

{
       id: 'report_panel',
       layout: 'fit',
       region: 'east',
       width : '40%',
       split:true,
       autoScroll: true,
       items: [panelRight,  panelRightStartUp],
       listeners: {
           render: function(panel) {
              panel.expand()
           }
       }
}

您也可以等待afterlayout父容器的事件。

于 2012-07-23T16:56:31.167 回答
0

拆分器倾向于记住它的状态,因此在刷新时拆分器将自己设置为它在上一个会话中的位置,以便让它忘记他的状态,请执行以下操作

{
       id: 'report_panel',
       layout: 'fit',
       region: 'east',
       width : '40%',
       split:true,
       **stateful : false,**
       autoScroll: true,
       items: [panelRight,  panelRightStartUp]
}
于 2012-07-24T13:09:16.490 回答