Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Динамическая высота грида (https://javascript.ru/forum/extjs/28689-dinamicheskaya-vysota-grida.html)

posta 29.05.2012 22:41

Динамическая высота грида
 
Не получается динамически поменять высоту грида в зависимости от 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. то появится скролл и все будет в шоколаде. за исключением того, что при изменении окна, меняется и вьюпорт, а в грид не меняется, и выглядит все это очень плохо.

posta 29.05.2012 23:08

Понял в чем дело. Решение:
Ext.getCmp('gridak').setHeight(Ext.getCmp('herushka').getHeight());

nekto_O 29.05.2012 23:39

зачем все это?
autoHeight: true

у грида задать не проще?

posta 30.05.2012 00:35

Цитата:

Сообщение от nekto_O (Сообщение 177437)
зачем все это?
autoHeight: true

у грида задать не проще?

не работает

nekto_O 30.05.2012 15:34

Цитата:

Сообщение от posta
не работает

значит лэйаут компонентов кривой.


Часовой пояс GMT +3, время: 18:29.