|
19.08.2003, 18:24 | #1 |
Гость
|
Ка программно изменить свойство JoinSource у DataSource формы
Пишу:
My_ds.JoinSource(Parent_ds); Проглатывает, но без нужного результата. Если же ручками JoinSource изменяю, то все хорошо :-( |
|
07.03.2007, 11:11 | #2 |
MCTS
|
Добрый время суток!
Извиняюсь, но возможно не понимаю одной простой вещи. Как при программном связывании нескольких датасурсов указать, что данные датасурсы - это датасурсы из макета? Пример. На форме есть DataSource1 (родительский) и DataSource2 (подчиненный). В int-методе DataSource1 пишу: X++: public void init() { Query q = new Query(); QueryBuildDataSource qbds; ; super(); q = this.query(); qbds = q.addDataSource(tablenum(DataSource2), "DataSource2"); qbds.joinMode(JoinMode::OuterJoin); qbds.fetchMode(QueryFetchMode::One2One); qbds.relations(true); } |
|
07.03.2007, 11:19 | #3 |
Участник
|
1. А зачем вы их программно связываете? все эти свойства можно задать и в дизайне.
2. может просто свойство DataSource на гридах неверно установлено? |
|
07.03.2007, 11:32 | #4 |
Участник
|
Датасоурс, созданный в коде не имеет отношения к датасорсу в дизайне.
Если хотите их связывать программно, то указывайте свойство joinMode для датасорса из дизайна. Т.е. DataSource2_ds.JoinMode() и т.д.
__________________
Axapta v.3.0 sp5 kr2 |
|
07.03.2007, 11:37 | #5 |
Участник
|
Так Вы же не связываете два существующих DataSource, а добавляете новый (третий) DataSource. Естесственно, что тот DataSource который был добавлен в дизайне так и остается не связанным.
|
|
07.03.2007, 14:20 | #6 |
MCTS
|
Спастбо за ответы.
Владимир Максимов, AndyD, я, в-общем, так и предполагал, что в данном случае (при использовании addDataSource) нельзя присоединить уже существующий в макете датасурс. Теперь подтвердилось. AndyD, не совсем понятно про JoinMode. С его помощью, насколько я понимаю, возможно поменять тип связи (с OuterJoin на InnerJoin, например). Мне необходимо изменить сами связи (т.е. связать определенный DataSource с другим, отличным от изначального). kashperuk Просто на форме есть несколько повторяющихся датасурсов (несколько гридов на разных закладках), хотелось для повышения производительности убрать некоторые и динамически менять связи между ними (форма грузится очень долго). Понятно, что форму можно разбить на несколько мелких, но хотелось опробовать другие варианты и по возможности оставить все же одну. Последний раз редактировалось cherv; 07.03.2007 в 14:25. |
|
07.03.2007, 15:28 | #7 |
Участник
|
Цитата:
Сообщение от cherv
Просто на форме есть несколько повторяющихся датасурсов (несколько гридов на разных закладках), хотелось для повышения производительности убрать некоторые и динамически менять связи между ними (форма грузится очень долго). Понятно, что форму можно разбить на несколько мелких, но хотелось опробовать другие варианты и по возможности оставить все же одну.
Для этого, если эти дополнительные DataSource - "цепочки" связанных таблиц в событии DataSource.init() главной таблицы цепочки напиши PHP код:
PHP код:
В результате, по тем DataSource которые не нужны в данный момент не будет выполняться никаких запросов к серверу. Как следствие - уменьшается время открытия формы |
|
|
За это сообщение автора поблагодарили: kashperuk (2), cherv (1). |
07.03.2007, 16:45 | #8 |
MCTS
|
Владимир Максимов
Огромнейшее спасибо! Управление свойством AutoSearch решило часть проблем, над которыми бились уже много дней! |
|