Страница 1 из 1

Динамическая смена ParentId в дереве

Добавлено: 28 Март 2006, 15:15
OVV
Приветствую Всех!

Вопрос, видимо, к Андрею:

В таблице хранится список подразделений. Одни подчиняются другим, т.е. дерево. Но группировать дерево надо по разным типам родителей: по территориальному признаку и по хозяйственному. У записи, естественно, два ParentId.
Сейчас сделано так: объявлен алиас таблицы, на заладках лежат два брауза. Ненужный тип родителей в браузе фильтруется.
Работает, но не очень нравится: синхронизировать надо, добавлять кнопари в 2-х экземплярах...

Хотел сделать все это в одном браузе:
В BRWx:Tree.Init по условию устанавливал SELF.ParentField &= ...
и при выборе закладки делал
BRWx:Tree.Init
BRWx:Browse.Load

но дерево по другим родителям не перестраивается.
Изучение TMAV.INC новых идей не принесло.

Возможно ли сделать такое?

Re: Динамическая смена ParentId в дереве

Добавлено: 28 Март 2006, 15:28
Andrew™
OVV писал(а):Приветствую Всех!

Вопрос, видимо, к Андрею:

В таблице хранится список подразделений. Одни подчиняются другим, т.е. дерево. Но группировать дерево надо по разным типам родителей: по территориальному признаку и по хозяйственному. У записи, естественно, два ParentId.
Сейчас сделано так: объявлен алиас таблицы, на заладках лежат два брауза. Ненужный тип родителей в браузе фильтруется.
Работает, но не очень нравится: синхронизировать надо, добавлять кнопари в 2-х экземплярах...

Хотел сделать все это в одном браузе:
В BRWx:Tree.Init по условию устанавливал SELF.ParentField &= ...
и при выборе закладки делал
BRWx:Tree.Init
BRWx:Browse.Load

но дерево по другим родителям не перестраивается.
Изучение TMAV.INC новых идей не принесло.

Возможно ли сделать такое?
надо пробовать и это не так просто, в зависимости от ParentField много доп структур делается, я бы сделал проще, одна Browse, НО
в качестве имени в DCT регистриуем переменную с атрибутом THREAD
теперь две задачи, в каждом потоке её надо не забывать инициализировать, как это проще сделать применительно к C6x
заводим глобальный класс с атрибутом THREAD и делаем реализацию конструктора, в котором этой переменной глобальной имени файла присваиваем правильное (default имя) значение

в БД строишь столько View с колько надо для построения деревьев, они по сути будут совпадать со структурой таблицы, за исклбючением одного в одной VIEW в качестве ParentID поля будет выступать одно поле таблицы, для другой - другое, имя через AS сделать одно и тоже

и теперь когда надо переключится на другое дерево, меняем имя VIEW - глобальную переменную которая закреплена за именем, и делаем обычный .Load

ещё есть вариант - в качестве загрузчика закрепить ХП с параметрами и возвращать требуемые SELECTы, они будут по идее совпадать но в качестве ParentID будет то одно, то другое поле таблицы

ДАВАЙ ПРИМЕР

Добавлено: 28 Март 2006, 15:37
Andrew™
будет пример APP/DCT с двумя TreeBrowse по одному файлу, скрипт на создание и наполнение таблицы, тогда и решение без объявления доп структур на сервере и DCT покажу в нём

на пальцах могу объяснить, но всё равно что то упущу.

Добавлено: 28 Март 2006, 15:52
OVV
надо пробовать и это не так просто, в зависимости от ParentField много доп структур делается,
Я в принципе, подозревал, что все не так просто. :)

Спасибо за совет, буду пробовать.