Показать сообщение отдельно
  #1 (permalink)  
Старый 29.05.2012, 22:41
Кандидат Javascript-наук
Отправить личное сообщение для posta Посмотреть профиль Найти все сообщения от posta
 
Регистрация: 27.08.2010
Сообщений: 115

Динамическая высота грида
Не получается динамически поменять высоту грида в зависимости от 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 в 22:48.
Ответить с цитированием