Динамическая высота грида
Не получается динамически поменять высоту грида в зависимости от 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. то появится скролл и все будет в шоколаде. за исключением того, что при изменении окна, меняется и вьюпорт, а в грид не меняется, и выглядит все это очень плохо. |
Понял в чем дело. Решение:
Ext.getCmp('gridak').setHeight(Ext.getCmp('herushka').getHeight()); |
зачем все это?
autoHeight: true у грида задать не проще? |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 18:29. |