Pull to refresh

Comments 23

Исправьте пожалуйста ссылки кода плагина и примера на абсолютные пути, а то получается, что ссылки ведут на хабр :)
А пример понравился, очень здорово, нам обязательно пригодится.
Спасибо, уже исправил :)
Заметил один небольшой баг. Если отсортировать вышестоящий грид, то вложенный закроется (если раскрыт), но минус не изменится на плюс.
Так вот ты какой «Дружественный пользовательский интерфейс»…
Некоторые вещи хороши лишь в разумных пределах :) Ну а тут уж ваше право, если нравится — можете именно так и использовать.
Офигительные плагины. Кинул себе в закладки. А можно у них задать разные дефинишины для колонок и полей на разных уровнях (количественно и по содержанию)?
Нет, поскольку там единый datastore и единая columnmodel.
перенесите, плиз, в блог по ExtJS, там нехватает хороших материалов
о! а я его как-то сразу не заметил :)
В 3.1 Этот компонент будет доступен из коробки через пару месяцев.
Еще бы в начало статьи сразу скриншот компонента.
Не совсем этот: TreeGrid является расширением дерева, а не грида (загрузка данных будет через Ext.tree.TreeLoader, а не через Ext.data.Store).
Есть несколько путей работы с древовидным-гридом в ExtJS. Правда не без плагинов.

Вариант 1.
Когда нужно дерево которое имеет колонки и может быть драг/дроп пересортировано.
Берем Tree, плагин ColumnTree и редактор ColumnTreeEditor.
pastebin.com/f33b993bc (мои измененные columntree и редактор).
Оригинальный плагин имел проблемы с редактированием более 1 поля.

Особенности:
Настоящее дерево. Для формирования нужны иерархические данные (многомерный массив). (http://pastebin.com/f48d4e6bf). Действия по перетасовке/перетаскиванию — родные. Гибко можно через события (onnodedrag/drop, etc) настроить логику перетаскивания.

Минусы:
Если много загрузить данных — будет рендерить все что есть, что может дать проблемы с производительностью. Но это особенность всех деревьев и их рендеринга.
Нет датастора для дерева. И соответственно обработка данных сложней без такого апи.

Вариант 2.
MaximGB tree grid.

Очень толковый плагин, но мне лично пришлось его пилить долго и упорно напильником для своего проекта. Позволяет делать древовидный грид. Есть датастор двух типов nested sets.
Поскольку с гридами в extjs работать легче чем с деревьями, то построение деревьев легче.

Огромный минус:
Писец медленный. При огромном кол-ве записей — можно застрелиться. Пришлось фиксить.

www.extjs.com/forum/showthread.php?p=380487#post380487
pastebin.com/f2fd44e13 — Еще одна моя версия для extjs 2.3, с рендерингом детей только при разворачивании родителя. Если чего то будет не хватать (ошибки), пишите в личку. Там есть пару внутренних вещей что я перегружал в extjs что-бы оно корректно работало.

Результат — стало просто летать в 10-15 раз быстрее.

Но в целом очень классная вещь, практически для 95% иерархических презентаций (списки сайтов по группам, списки продуктов по их инвентарной иерархии.) я использую этот вариант.

Вариант 3.
GroupingStore + GroupingView.

Хорош для аналитических простых списков. Типа: Грид, а грид? Нука, сгрупируй сайты мне тут по серверу. Видел варианты многоуровеневой группировки, но не использовал и ничего сказать не могу.

Минус:
Тоже медленный при больших обьемах строк. В качестве сравнения используется отрендеренная колонка (!), а не датафилд.

Тоже фиксы всякие:
pastebin.com/f7b0be3fe

Замечание:
Код представлен для версии 2.3. Не факт что он подойдет для третьей версии.

UPD:
Коды всех фиксов в заметке для версии 2.3.

«Поскольку с гридами в extjs работать легче чем с деревьями, то построение деревьев легче.»
Имел в виду что построение (заполнение данных, гламуризация внешнего вида и т.д.) грида с древовидным отображением используя плагин MaximGB tree grid легче, чем построение дерева используя Ext.Tree.

Меня более интересует компонент в котором иерархия по сути не глубокая. А вот наботы данных разные на разных уровнях (кол-во колонок и их содержание). При этом глубина может отличаться в зависимости от условий (конфигурации). И необходимость иметь возможность фильтровать/сортировать группировать каждый уровень по отдельности. Классические деревья с этим не справляются. Простейший вариант — вложение гридов. Именно поэтому появился этот топик. А за линки — большое спасибо — информация полезная.
Да это и есть тот самый мульти-групинг.
Sign up to leave a comment.

Articles