Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Изменение высоты заголовков grid-а (https://javascript.ru/forum/extjs/56824-izmenenie-vysoty-zagolovkov-grid.html)

khusamov 05.07.2015 19:21

Изменение высоты заголовков grid-а
 
Почему когда я пытаюсь поменять высоту заголовков колонок


listeners: {
	render: function() { this.getHeaderContainer().setHeight(60); }
}


то сплиттер между названиями колонок начинает генерировать ошибку Cannot read property 'heightModel' of null, при попытке его сдвинуть?

Код в песочнице https://fiddle.sencha.com/#fiddle/ptb

nohuhu 06.07.2015 22:59

Потому что не надо ничего делать в render, onRender, afterRender. И вообще не надо высоту выставлять программно, пользуйтесь конфигурацией:

Код:

        Ext.create('Ext.grid.Panel', {
            title: 'Simpsons',
            store: Ext.data.StoreManager.lookup('simpsonsStore'),
           
            // columns это объект, который скармливается конструктору
            // Ext.grid.header.Container
            columns: {
                height: 10,
                items: [
                        { text: 'Name', dataIndex: 'name' },
                        { text: 'Email', dataIndex: 'email', flex: 1 },
                        { text: 'Phone', dataIndex: 'phone' }
                ]
            },
           
            height: 200,
            width: 400,
            renderTo: Ext.getBody()
        });

См. сохранённый fiddle.

khusamov 07.07.2015 16:47

Нужен способ ПРОГРАММНЫЙ, так как такой финт как

columns: {
                height: 10,


я не смогу проделать для класса Ext.grid.property.Grid:

http://docs.sencha.com/extjs/5.1/5.1....property.Grid

он просто перепишет мою конфигурацию своей, судя по коду класса Ext.grid.property.Grid:

me.columns = new Ext.grid.property.HeaderContainer(me, me.store);


*кстати очень печально что он это делает, что затрудняет наследование от него...

либо не знаю как это сделать не программно...

nohuhu 08.07.2015 23:59

Ну, вы ж не уточнили, что вам это нужно для PropertyGrid. :( Эта штука хак на хаке, одна из доисторических наколенных поделок криворуких ковбоев каменного века… Попробуйте наследовать от PropertyGrid и задать высоту *до* рендеринга:

Ext.define('My.property.Grid', {
    extend: 'Ext.grid.property.Grid',

    initComponent: function() {
        this.callParent();

        this.columns.height = 10;
    }
});


По идее должно сработать.

khusamov 09.07.2015 08:50

Цитата:

Эта штука хак на хаке, одна из доисторических наколенных поделок криворуких ковбоев каменного века…
вертелся у меня на языке вопрос о странном содержимом класса...

Ну раз наследоваться, то тогда я все проблемы разом и решу. Возможно лучше тогда свой делать класс.

nohuhu 09.07.2015 23:16

Таких доисторических компонентов не очень много осталось, они "в общем" работают и руки до них никак не доходят. Кроме PropertyGrid, можно ещё вспомнить Paging Toolbar, Date picker, ну и конечно звезду эстрады HtmlEditor. Этот я просто ненавижу люто и бешено, но переписывать его тоже не с руки, долго это и больно. Поэтому каждый раз, когда нужно какой-нибудь баг пофиксить, зажимаю нос и стараюсь глубоко в эту пакость не смотреть, чтобы не стошнило. :( Пардон за подробности…

Так что да, советую наследоваться и фиксить местами то, что нужно.


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