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 メソッドを呼び出そうとしているときに がレンダリングされていないために発生しています。これは、Ext-JS がsetTimeoutコンポーネントをレイアウトするときに a を使用することがあるためです。最も簡単な解決策は、render イベントを待機し、そのハンドラーから expand を呼び出すことです。

{
       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 に答える