Не получается динамически поменять высоту грида в зависимости от resize окна (или панели в которой находится грид).
По коду - все меняется. но в браузере -никаких изменений не происходит.
Приложение - mvc.
Пример:
var vp = Ext.create('Ext.Viewport', {
id:'vport',
layout: 'border',
items: [
{
region: 'center',
id:'herushka',
minHeight: 300,
items: [{xtype: 'tlist',id:'gridak', height:200}]
},
{
region: 'south',
collapsible: true,
height: 100,
minHeight: 50,
title: 'South'
}],
renderTo: Ext.getBody()
});
Сетка
Ext.define('Tender.view.Test.List' ,{
extend: 'Ext.grid.Panel',
alias : 'widget.tlist',
store : 'Test',
initComponent: function() {
this.columns =[
// {...},{...},{...}
];
this.callParent(arguments);
}
});
ну и, соответственно в контроллере:
...
onWinResized: function(a,w,h,o) {
console.log('Resized');
console.log('herushka:'+Ext.get('herushka').getHeight());
console.log('gridak:'+Ext.get('gridak').getHeight());
Ext.get('gridak').setHeight(Ext.get('herushka').getHeight()-40);
console.log('gridak:'+Ext.get('gridak').getHeight());
},
...
Когда смотришь в консоль - все меняется просто замечательно. Смотришь код - тоже меняется высота.
А в браузере - то же самое остается. Может надо как то отрендерить? или обновить сетку? Хотя, по идее, должно все автоматом делаться.
Смысл таких телодвижений в том, что грид не растягивается в высоту при изменении viewport'а. Если задаешь определенную высоту - то появляется скролл. Если не задаешь этот параметр - то скролл не появляется, и высота грида будет зависит от количества записей в ней. в моем случае - около 2500. Если же задать явно параметр height = 300. то появится скролл и все будет в шоколаде. за исключением того, что при изменении окна, меняется и вьюпорт, а в грид не меняется, и выглядит все это очень плохо.