06.02.2008, 08:53 | #1 |
Постигающий
|
Сменить DataSource у Grid
Доброго времени суток!
Столкнулся с проблемой при смене источника у грида. На форме 2 DS. по ходу работы с формой нужно в одном гриде отражать данные, идентичные по структуре, но разные по содержанию. Как я делаю : в коде меняю у каждого поля грида свойство Datasource напр: X++: Grid.dataSource(TmpTable_DS.id());
Grid_Code.dataSource(TmpTable_DS.id());
Grid_Code.dataField(fieldNum(TmpTable , Code)); в конце X++: element.redraw() при смене источника , поля на гриде "съезжают" + к тому грид не отражает некоторые поля где зло спряталось??? спасибо. |
|
06.02.2008, 10:18 | #2 |
Administrator
|
Зло спряталось в смене источника . На самом деле - того же эффекта (конечного) можно добиться - заранее создав в гриде все поля, но скрывая/показывая ненужные/нужные поля.
Эта процедура - более шустро и с меньшими глюками отрабатывает. Но это взгляд со стороны разработчика.
__________________
Возможно сделать все. Вопрос времени |
|
06.02.2008, 10:35 | #3 |
Постигающий
|
спасибо но ваш вариант не подойдет. вот почему :
вообще изначально был реализован вариант с 2мя гридами, котрые скрываются попеременке. все было хорошо, кроме одного момента : ШИРИНА СТОЛБЦОВ НЕ СОХРАНЯЛАСЬ ПРИ ЗАМЕНЕ ОДНОГО ГРИДА НА ДРУГОЙ ((( из за этого решили делать в одном гриде со сменяющимся источником. "не понос , так золотуха" (( |
|
06.02.2008, 10:42 | #4 |
Участник
|
используйте лучше для скрытия/показа Tab
|
|
06.02.2008, 11:14 | #5 |
Постигающий
|
|
|
06.02.2008, 11:33 | #6 |
Участник
|
Фиксируйте значит ширину полей, что ж тут еще делать.
Неудобно - но, как говорится, какая задача, такое и решение |
|
06.02.2008, 11:59 | #7 |
MCT
|
Скорее всего ширина наследуется от свойства расширенного типа данных
|
|
06.02.2008, 12:41 | #8 |
Постигающий
|
ширину пользователь задает мышкой )
при смене источника , меняется видимый грид/таб/набор полей (любое решение приводит к изменению ширины полей в любом случае) видимо есть два решения: -зафиксировать ширину полей напроч (как Kashperuk посоветовал) -использовать один грид под два ДС (не получается (( ) |
|
06.02.2008, 13:25 | #9 |
Участник
|
|
|
06.02.2008, 13:28 | #10 |
Участник
|
МАР или... я так понимаю, что табличка темповая... мож перестроить? Или создать темповою таблицу (выборка из одной или другой таблицы) и грид сделать на ней?
|
|
06.02.2008, 13:46 | #11 |
Постигающий
|
распишу ка поподробнее:
-внешне форма должна выглядеть как форма с гридом ) и пользователь не должен видеть последствия смены источника данных (изменение ширины полей грида например при подмене грида) -данные в гриде представляются в двух видах (в зависимости от настройки "фильтра") : 1.отфильтрованные и отсортированные (1 источник - постоянная) 2.сгруппированные и отсортированные (2 источник - временная таблица, хранящая результат группировки и сортированная как п.1) еще есть проблема с сортировкой временной таблицы (она сортируется по полю Order привязанной таблицы OtherTable (связь через TmpTable.CodeRef - OtherTable.Code)). ExecuteQuery: X++: this.cursor().setTmpData(TmpTableGlobal); q = new Query(); qbds = q.addDataSource(tableNum(TmpTable)); qbds2 = qbds.AddDataSource(TableNum(OtherTable)); qbds2.addLink(fieldNum(TmpTable, refCode) , fieldNum(OtherTable, Code)); qbds2.addSortField(fieldNum(OtherTable , Order)); qbds2.orderMode(orderMode::OrderBy); this.query(q); super(); Последний раз редактировалось Андрей К.; 06.02.2008 в 13:50. |
|
06.02.2008, 14:01 | #12 |
Участник
|
Цитата:
Сообщение от Андрей К.
распишу ка поподробнее:
-внешне форма должна выглядеть как форма с гридом ) и пользователь не должен видеть последствия смены источника данных (изменение ширины полей грида например при подмене грида) -данные в гриде представляются в двух видах (в зависимости от настройки "фильтра") : Цитата:
Сообщение от Андрей К.
1.отфильтрованные и отсортированные (1 источник - постоянная)
2.сгруппированные и отсортированные (2 источник - временная таблица, хранящая результат группировки и сортированная как п.1) еще есть проблема с сортировкой временной таблицы (она сортируется по полю Order привязанной таблицы OtherTable (связь через TmpTable.CodeRef - OtherTable.Code)). ExecuteQuery: X++: this.cursor().setTmpData(TmpTableGlobal); q = new Query(); qbds = q.addDataSource(tableNum(TmpTable)); qbds2 = qbds.AddDataSource(TableNum(OtherTable)); qbds2.addLink(fieldNum(TmpTable, refCode) , fieldNum(OtherTable, Code)); qbds2.addSortField(fieldNum(OtherTable , Order)); qbds2.orderMode(orderMode::OrderBy); this.query(q); super(); |
|
06.02.2008, 14:04 | #13 |
Участник
|
Предлолжение:
Сделать 2 закладки (TabPages). Вторую назвать "Развернутые данные" или как-то наподобие. Ни одну не скрывать - пользователи смогут смотреть и то и то, и при этом не придется извратом заниматься, пытаясь подменять источники.. |
|
06.02.2008, 14:09 | #14 |
Участник
|
Цитата:
Если уже пошла такая пьянка, могу предложить Table поюзать... Если данных не много |
|
06.02.2008, 14:40 | #15 |
Постигающий
|
Да правда, табы использовать не хотят...
dns , с MAP надо поразбираться (еще не работал толком, а времени мало) ....спасибо за подсказку с полем сортировки , но как я буду его это поле заполнять? когда бегу по Query (попутно занося его строки в TmpTable), в котором в OrderMode выставлена группировка ? Последний раз редактировалось Андрей К.; 06.02.2008 в 14:46. |
|
06.02.2008, 14:48 | #16 |
Участник
|
Цитата:
Сообщение от Андрей К.
Да правда, табы использовать не хотят...
dns , с MAP надо поразбираться (еще не работал толком, а времени мало) ....спасибо за подсказку с полем сортировки , но как я буду его это поле заполнять? когда бегу по Query (попутно занося его строки в TmpTable), в котором в OrderMode выставлена группировка ? |
|
06.02.2008, 15:07 | #17 |
SAP
|
А по мойму это проще организавать через временную таблицу, грид работает с одной временной таблицей, а в зависимости от условий таблица заполняется данными из разных источников (подобие мапа).
|
|
06.02.2008, 15:11 | #18 |
Участник
|
|
|
06.02.2008, 15:28 | #19 |
Постигающий
|
dns в аксапте нельзя сортировать и группировать одновременно, нельзя будет заполнить поле сортировки по ходу заполнения временной таблицы...или я ошибаюсь ?
|
|
06.02.2008, 17:34 | #20 |
Участник
|
Ошибаетесь... Запрос с группировками вернет результат отсортированным, в таком же порядке, в котором указана группировка.
|
|