あなたの問題は、親コンテナーのレイアウトを指定できないことにあると思います。これにより、タブパネルの本体が無期限に拡張されます。これにより、グリッドがレイアウトから定義された高さ/幅を取得できなくなり、バッファリングされたグリッドで高さがゼロのグリッドになり、静的グリッドのすべてのレコードを含むように高さを拡張するグリッドになります。app.js のセンター パネルの定義でうまくいったのは次のとおりです。
//Store a reference to the main element that you create and add the to application div
ScrollIssue.element = Ext.create('Ext.container.Container', {
renderTo: 'application',
height: windowHeight,
layout: 'border',
bodyBorder: true,
defaults: {
bodyPadding: 5
},
items: [
{
title: 'Filters',
region:'north',
floatable: false,
margins: '5 0 0 0',
height: 150,
minHeight: 150,
maxHeight: 150,
collapsible: true,
collapsed: true,
html: 'filters would go here'
},
{
title: 'Main Content',
region: 'center',
margins: '5 0 0 0',
//Add a layout here
layout: 'fit',
items: [
Ext.widget(
'tabpanel', {
activeTab: 0,
plain: true,
//Add a layout here
layout: 'fit',
//Change this to regular padding
defaults: {padding: 10},
items: [
{
title: "Static",
xtype: 'staticGrid'
},
{
title: "Buffered",
xtype: "bufferedGrid"
}
]
}
)
]
},
{
title: 'Detail',
region: 'south',
height: 150,
minHeight: 100,
maxHeight: 250,
html: 'Detail Panels',
collapsible: true
}
]
});
//Listen to the window resize event and reset the height to
// 50 pixels less than the total viewport height to account
// for the banner above
Ext.EventManager.onWindowResize(function(w, h) {
ScrollIssue.element.setHeight(h - 50);
})
メイン コンテンツとタブ パネルの両方に「layout: fit」が追加されていること、および bodyPadding から通常のパディングに変更されていることに注意してください (ボディ スタイルにより、水平スクロール バーが表示されます)。
EDIT
ウィンドウのサイズ変更を機能させるには、最上位の ext コンポーネントにウィンドウの高さの変更を伝える必要があります。上部のバナーはコード内のどこにもないため、画面上の他の要素のサイズや、レイアウト マネージャーがそれらと対話する方法を知ることができません。さらに、ここにあるように高さを静的な値に設定すると、コンテナが変更されても変更されません。ただし、ウィンドウのサイズが変更されたときに高さを明示的にリセットすると、うまくいきます。