05.07.2015, 19:21
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Изменение высоты заголовков grid-а
Почему когда я пытаюсь поменять высоту заголовков колонок
listeners: {
render: function() { this.getHeaderContainer().setHeight(60); }
}
то сплиттер между названиями колонок начинает генерировать ошибку Cannot read property 'heightModel' of null, при попытке его сдвинуть?
Код в песочнице https://fiddle.sencha.com/#fiddle/ptb
Последний раз редактировалось khusamov, 05.07.2015 в 19:28.
|
|
06.07.2015, 22:59
|
|
Профессор
|
|
Регистрация: 21.05.2015
Сообщений: 321
|
|
Потому что не надо ничего делать в 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.
|
|
07.07.2015, 16:47
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Нужен способ ПРОГРАММНЫЙ, так как такой финт как
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);
*кстати очень печально что он это делает, что затрудняет наследование от него...
либо не знаю как это сделать не программно...
Последний раз редактировалось khusamov, 07.07.2015 в 16:49.
|
|
08.07.2015, 23:59
|
|
Профессор
|
|
Регистрация: 21.05.2015
Сообщений: 321
|
|
Ну, вы ж не уточнили, что вам это нужно для PropertyGrid. :( Эта штука хак на хаке, одна из доисторических наколенных поделок криворуких ковбоев каменного века… Попробуйте наследовать от PropertyGrid и задать высоту *до* рендеринга:
Ext.define('My.property.Grid', {
extend: 'Ext.grid.property.Grid',
initComponent: function() {
this.callParent();
this.columns.height = 10;
}
});
По идее должно сработать.
|
|
09.07.2015, 08:50
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Цитата:
|
Эта штука хак на хаке, одна из доисторических наколенных поделок криворуких ковбоев каменного века…
|
вертелся у меня на языке вопрос о странном содержимом класса...
Ну раз наследоваться, то тогда я все проблемы разом и решу. Возможно лучше тогда свой делать класс.
|
|
09.07.2015, 23:16
|
|
Профессор
|
|
Регистрация: 21.05.2015
Сообщений: 321
|
|
Таких доисторических компонентов не очень много осталось, они "в общем" работают и руки до них никак не доходят. Кроме PropertyGrid, можно ещё вспомнить Paging Toolbar, Date picker, ну и конечно звезду эстрады HtmlEditor. Этот я просто ненавижу люто и бешено, но переписывать его тоже не с руки, долго это и больно. Поэтому каждый раз, когда нужно какой-нибудь баг пофиксить, зажимаю нос и стараюсь глубоко в эту пакость не смотреть, чтобы не стошнило. :( Пардон за подробности…
Так что да, советую наследоваться и фиксить местами то, что нужно.
|
|
|
|