Red Spirit

Блог Алексея Таянчина

RSS 2.0

ExtJS Grid Grouping поведение аккордиона

Такая вот очень специфичная тема поста, но может кому пригодится, как и мне в будущем.

Проблема возникла в том, что табличка ExtJS (я использовал версию 4.2) после применения к ней группировки записей не всегда предсказуемо себя ведет, причем проявляется это не всегда, в зависимости от загруженных данных и поля группировки. В общем суть такая, что если раскрыть более одной группы а затем кликнуть на какую-нибудь запись, а по событию кликать получить данные о выбранной записи, то происходит переполнение стэка. Вроде как это такой пока невылеченый баг, но он решается весьма просто – не надо раскрывать более 1 группы записей, тогда все работает нормально.

В общем надо сделать так, что при раскрытии одной группы все остальные группы сворачивались, получается такой аккордеон, одно открываешь, другое закрывается. Стандартно ExtJS такого не делает, по этому я прилагаю свое решение

Обьект Ext.grid.feature.Grouping я создал отдельно, пример такой:

Назначаем гриду нашу “фичу” для группировки:

Тут нам понадобиться id:’workselgrid’ чтобы в дальнейшем обратиться к самому гриду для отлавливания событий.

И далее код, который делает всю работу: обрабатывает событие клика по заголовку группы (событие при раскрытии), получение списка всех заголовков групп и поочередно закрываем все группы, кроме той, которую только что открыли.

Ну вот и все