Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Ext.grid.column.Column.setSortable() (https://javascript.ru/forum/extjs/56823-ext-grid-column-column-setsortable.html)

khusamov 05.07.2015 19:16

Ext.grid.column.Column.setSortable()
 
У компонента

http://docs.sencha.com/extjs/5.1/5.1....column.Column

нет метода Ext.grid.column.Column.setSortable()

А кто-то тут говорил, что на весь конфиг любого компонента есть методы get и set.

И как в этом случае на ходу выключить возможность сортировки в определенной колонке?

nohuhu 06.07.2015 23:13

Ответ на первый вопрос:

Getters/setters генерируются автоматически для свойств объекта config, если таковой имеется. Однако большая часть конфигурационных опций в Ext JS аксессоров не имеет, т.к. является просто свойствами объекта без какой-либо магии.

Код:

Ext.define('Foo', {
    config: {
        /**
        * @cfg {String} bar будет иметь getBar(), setBar(), etc
        */
        bar: 'qux'
    },

    /**
    * @cfg {String} throbbe это просто свойство, аксессоров нет
    */
    throbbe: 'blerg'
});

Если посмотрите в код фреймворка, то увидите кучу таких вот документационных вставок. Всё это добро идёт с незапамятных времён, когда config system ещё не было, а жить как-то надо было. :)

В общем случае мы стараемся все новые опции добавлять в блоки config, но старые опции, которые существовали до Ext JS 5.0, остались как были для совместимости.

Ответ на второй вопрос: судя по коду Column, динамического переключения sortable не предусмотрено.

khusamov 07.07.2015 16:44

да уж... тяжелое наследие...

Получается чтобы переключить sortable придется делать клон колонки, удалять старую, вставлять новую?

nohuhu 07.07.2015 20:25

Технически да, надо заменить старую колонку на новую. С точки зрения практики всё проще, потому что всё уже украдено до нас:

grid.reconfigure(/* new_store = */ null, [new_columns]);


Можно даже new_columns сгенерировать из уже имеющихся, пройдя по ним в цикле и запросив initialConfig. Решение этой задачи оставлю на усмотрение читателя. ;)

khusamov 07.07.2015 21:23

К сожалению не работает этот метод для класса Ext.grid.property.Grid

Код в песочнице https://fiddle.sencha.com/#fiddle/q11 (при клике по любой ячейке появляется ошибка Cannot read property 'getVisibleGridColumns' of undefined)

Да уж... накопилось столько проблем с этим Ext.grid.property.Grid, что проще похоже сделать все таки свой.

nohuhu 09.07.2015 00:01

Ну, сделайте свой, если так проще будет. ;)


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