Публикация

Отображение данных детали в виде иерархической структуры

Вопрос

Как отобразить данные на детали в виде иерархической (древовидной) структуры?

Ответ

Для реализации отображения детали в виде иерархического реестра необходимо выполнить следующие шаги:

1) в объекте детали должно быть поле, содержащее идентификатор родительской записи (например, Parent), ссылающееся на этот же объект. Это поле должно быть указано в свойстве "Родитель в иерархии" объекта детали;

2) в блоке diff схемы детали для элемента DataGrid необходимо добавить значения "hierarchical": true и "hierarchicalColumnName": "<Название родительской колонки>" (второе свойство необходимо указывать только если название родительской колонки отличается от Parent);

3) добавить свою кнопку (или модифицировать существующую) для возможности добавления новых элементов детали в корень иерархии либо как подчинённые к выбранной записи;

4) реализовать методы добавления записей в нужную ветку иерархии и другие по необходимости (зависит от реализации детали).

Для более подробной информации можно посмотреть прикрепленный файл.

Нравится

Поделиться

3 комментария

На самом деле

3) Замещаем метод addGridDataColumns добавив в него все нужные колонки (обязательно колонку родитель, ну и остальные по необходимости):

 

addGridDataColumns: function (esq) {

                this.callParent(arguments);

                if (!esq.columns.contains("UsrParent")) {

                    esq.addColumn("UsrParent");

                }

            }

остальные пункты уже не обязательные именно для построения самой иерархии и служат для удобства работы с ней

Как минимум, от п. 1 с созданием в самом объекте поля-родителя не обойтись. Да и остальное тоже не выглядят лишним, если Вы хотите работать именно как с деревом, а не просто с колонкой и её значением.

А как запретить выбрать узлы для ИЕРАРХИЧЕСКОГО справочника ?

Показать все комментарии