Comments 23
Исправьте пожалуйста ссылки кода плагина и примера на абсолютные пути, а то получается, что ссылки ведут на хабр :)
А пример понравился, очень здорово, нам обязательно пригодится.
А пример понравился, очень здорово, нам обязательно пригодится.
+1
Заметил один небольшой баг. Если отсортировать вышестоящий грид, то вложенный закроется (если раскрыт), но минус не изменится на плюс.
+1
Это жесть:
0
а еще есть интересный плагин max-bazhenov.com/dev/ux.maximgb.tg/index.php там и «nested set» и «adjacency list»
+2
перенесите, плиз, в блог по ExtJS, там нехватает хороших материалов
+1
В 3.1 Этот компонент будет доступен из коробки через пару месяцев.
0
Есть несколько путей работы с древовидным-гридом в 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. Не факт что он подойдет для третьей версии.
Вариант 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. Не факт что он подойдет для третьей версии.
+1
UPD:
Коды всех фиксов в заметке для версии 2.3.
«Поскольку с гридами в extjs работать легче чем с деревьями, то построение деревьев легче.»
Имел в виду что построение (заполнение данных, гламуризация внешнего вида и т.д.) грида с древовидным отображением используя плагин MaximGB tree grid легче, чем построение дерева используя Ext.Tree.
Коды всех фиксов в заметке для версии 2.3.
«Поскольку с гридами в extjs работать легче чем с деревьями, то построение деревьев легче.»
Имел в виду что построение (заполнение данных, гламуризация внешнего вида и т.д.) грида с древовидным отображением используя плагин MaximGB tree grid легче, чем построение дерева используя Ext.Tree.
0
Меня более интересует компонент в котором иерархия по сути не глубокая. А вот наботы данных разные на разных уровнях (кол-во колонок и их содержание). При этом глубина может отличаться в зависимости от условий (конфигурации). И необходимость иметь возможность фильтровать/сортировать группировать каждый уровень по отдельности. Классические деревья с этим не справляются. Простейший вариант — вложение гридов. Именно поэтому появился этот топик. А за линки — большое спасибо — информация полезная.
0
Вот тоже интересный компонент — расширение GroupingView:
jaffa.sourceforge.net/JaffaRIATests/tests/extjs/multigroup/MultiGroup.html
jaffa.sourceforge.net/JaffaRIATests/tests/extjs/multigroup/MultiGroup.html
0
Sign up to leave a comment.
Nested Grids с помощью ExtJS 3.0