|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от AngelDominantes
![]() С деревом немного разобрался, написал рекурсивную функцию для заполнения, пока все идет хорошо. Возник вопрос каким образом можно из обработчика событий на дереве изменить содержание на гриде, как я понимаю нужно выполнить запрос для датасорса, но с этим не разу не сталкивался направьте на путь истинный, будьте любезны.
|
|
![]() |
#2 |
Участник
|
Картинку покажите?
![]()
__________________
Ivanhoe as is.. |
|
![]() |
#3 |
Участник
|
Извини, не покажу. Основу составляют данные заказчиков, и выкладывать это на широкое обозрение не буду.
Но в приципе все просто: - форма трекера задач - слева в дереве заказчики и статусы задач как первый и второй уровень дерева. - справа в гриде собственно список задач. Удобно, как я понимаю (теперь то я задумался об этом...) потому, что все элементы первого уровня легко умещаются на одном экране - соответственно получается типа панель быстрого доступа, в которой легко можно перепрыгнуть с задач Заказчика 1 в разработке к запланированным для Заказчика 2.
__________________
Ален ноби, ностра алис. Что означает - если один человек построил, другой завсегда разобрать может. |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от AlGol
![]() Удобно, как я понимаю (теперь то я задумался об этом...) потому, что все элементы первого уровня легко умещаются на одном экране - соответственно получается типа панель быстрого доступа, в которой легко можно перепрыгнуть с задач Заказчика 1 в разработке к запланированным для Заказчика 2.
![]() ![]() |
|
![]() |
#5 |
Участник
|
не, не хочу чтобы другие давали такие отсылки.
пусть на форуме будут развернутые ответы. итак. 1. на форме должы быть обычные табличные датасоры 2. один из самых верхних датасорсов должен "соответствовать" элементам дерева 3. на treeView перехватываете метод selectionChanged 4. в котором так или иначе вызываете метод table_ds.findRecord метод findRecord выполняет позиционирование датасорса. И изменение всех подчиненных датасорсов. что неизбежно отобразится на форме. грид для датасорса верхнего уровня (который соответствует дереву) можно на форме не отображать. и без этого форма будет чудесно работать. пример того, как это работает см. в форме projTable |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от mazzy
![]() не, не хочу чтобы другие давали такие отсылки.
пусть на форуме будут развернутые ответы. итак. 1. на форме должы быть обычные табличные датасоры 2. один из самых верхних датасорсов должен "соответствовать" элементам дерева 3. на treeView перехватываете метод selectionChanged 4. в котором так или иначе вызываете метод table_ds.findRecord метод findRecord выполняет позиционирование датасорса. И изменение всех подчиненных датасорсов. что неизбежно отобразится на форме. грид для датасорса верхнего уровня (который соответствует дереву) можно на форме не отображать. и без этого форма будет чудесно работать. пример того, как это работает см. в форме projTable Последний раз редактировалось AngelDominantes; 03.08.2011 в 15:47. |
|
![]() |
#7 |
Участник
|
можно и так. но это закат солнца вручную.
ваше дерево наверняка имеет соответствие 1:1 в какой-то таблице. так? вот эту таблицу и помещаете как ведущий датасорс формы. остальные таблицы делаете подчиненными. связи с первой должны быть выражены обычными для аксапты способами безо всякого программирования. через relation в типах или в таблицах. поэтому позиционировать из treeView надо только одну таблицу - главную. остальные отфильтруются сами как в master/detail форме. (при этом в отличие от master/detail грид главной таблицы можно не показывать) |
|
![]() |
#8 |
Участник
|
Цитата:
нарисуйте сначала нормальную master/detail форму (это делается легко и просто. и безо всякого программирования) потом вместо master-грида используйте treeView. вот и весь секрет. |
|
![]() |
#9 |
Участник
|
Цитата:
Сообщение от mazzy
![]() можно и так. но это закат солнца вручную.
ваше дерево наверняка имеет соответствие 1:1 в какой-то таблице. так? вот эту таблицу и помещаете как ведущий датасорс формы. остальные таблицы делаете подчиненными. связи с первой должны быть выражены обычными для аксапты способами безо всякого программирования. через relation в типах или в таблицах.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#10 |
Участник
|
Цитата:
С деревом программировать придется много. Очень много. |
|
![]() |
#11 |
Участник
|
ох уж это дерево.... я думаю, мой вопрос вам понравится не меньше:
На форме спланированные заказы-развёртывание строится дерево по конкретному заказу и через кнопку настройки можно указать то, что будет видно в данном дереве. Я хочу добавить туда некоторые поля из InventTable, ну нравятся они мне, так приятнее. Для этого в форме настроек добавляем новое поле в TmpReqExplosionTree, затем новый пункт, например пусть это будет DisplayItemNameAlias. В форму развёртывания добавляем источник данных InventTable... а дальше? в туториале ничего толком об этом нет, к сожалению... Ну даже если я хочу жёстко прописать отображение какого-то поля из нового источника данных не из формы настроек, а вообще, откуда-то из связанной таблицы - с этим деревом можно с ума сойти... у него же нет источника, всё так жёстко, никакой фильтрации нет... Аналогичная ситуация с конструктором спецификаций, там например нет возможности добавить что-то ещё, что иногда ну очень неудобно. Если там уж пусть всё будет, как было и редактирование через таблицу более удобно, то развёртывание спланированных заказов - дело другое. Это реально необходимо. Последний раз редактировалось niksen; 11.01.2012 в 10:37. |
|
Теги |
дерево, как правильно |
|
![]() |
||||
Тема | Ответов | |||
Экспорт/Импорт прав доступа | 28 | |||
Дерево Tree | 7 | |||
Вопрос про Web Apps | 18 | |||
Дерево сопоставлений в SP2? | 4 | |||
дерево ФК | 1 |
|