AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.02.2008, 08:53   #1  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
;) Сменить 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  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Зло спряталось в смене источника . На самом деле - того же эффекта (конечного) можно добиться - заранее создав в гриде все поля, но скрывая/показывая ненужные/нужные поля.
Эта процедура - более шустро и с меньшими глюками отрабатывает.
Но это взгляд со стороны разработчика.
__________________
Возможно сделать все. Вопрос времени
Старый 06.02.2008, 10:35   #3  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
спасибо но ваш вариант не подойдет. вот почему :
вообще изначально был реализован вариант с 2мя гридами, котрые скрываются попеременке. все было хорошо, кроме одного момента :
ШИРИНА СТОЛБЦОВ НЕ СОХРАНЯЛАСЬ ПРИ ЗАМЕНЕ ОДНОГО ГРИДА НА ДРУГОЙ (((
из за этого решили делать в одном гриде со сменяющимся источником.
"не понос , так золотуха" ((
Старый 06.02.2008, 10:42   #4  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,737 / 404 (17) +++++++
Регистрация: 23.03.2006
используйте лучше для скрытия/показа Tab
Старый 06.02.2008, 11:14   #5  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
Цитата:
Сообщение от ice Посмотреть сообщение
используйте лучше для скрытия/показа Tab
учту на будущее...
но что делать с полями, их ширина так и остается разной
Старый 06.02.2008, 11:33   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Фиксируйте значит ширину полей, что ж тут еще делать.
Неудобно - но, как говорится, какая задача, такое и решение
Старый 06.02.2008, 11:59   #7  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Скорее всего ширина наследуется от свойства расширенного типа данных
Старый 06.02.2008, 12:41   #8  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
Цитата:
Сообщение от MikeR Посмотреть сообщение
Скорее всего ширина наследуется от свойства расширенного типа данных
ширину пользователь задает мышкой )
при смене источника , меняется видимый грид/таб/набор полей (любое решение приводит к изменению ширины полей в любом случае)

видимо есть два решения:
-зафиксировать ширину полей напроч (как Kashperuk посоветовал)
-использовать один грид под два ДС (не получается (( )
Старый 06.02.2008, 13:25   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
идентичные по структуре, но разные по содержанию.
А нельзя ли тут как -нибудь MAP поюзать
Старый 06.02.2008, 13:28   #10  
dns is offline
dns
Участник
 
19 / 13 (1) ++
Регистрация: 11.05.2007
МАР или... я так понимаю, что табличка темповая... мож перестроить? Или создать темповою таблицу (выборка из одной или другой таблицы) и грид сделать на ней?
Старый 06.02.2008, 13:46   #11  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
распишу ка поподробнее:
-внешне форма должна выглядеть как форма с гридом ) и пользователь не должен видеть последствия смены источника данных (изменение ширины полей грида например при подмене грида)
-данные в гриде представляются в двух видах (в зависимости от настройки "фильтра") :
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();
если таблицу TmpTable сделать не temporary, то она нормально сортируется

Последний раз редактировалось Андрей К.; 06.02.2008 в 13:50.
Старый 06.02.2008, 14:01   #12  
dns is offline
dns
Участник
 
19 / 13 (1) ++
Регистрация: 11.05.2007
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
распишу ка поподробнее:
-внешне форма должна выглядеть как форма с гридом ) и пользователь не должен видеть последствия смены источника данных (изменение ширины полей грида например при подмене грида)
-данные в гриде представляются в двух видах (в зависимости от настройки "фильтра") :
Два последних поста вам не принесли результата? Хм... тогда опишите проблему, с которой сталкнулись

Цитата:
Сообщение от Андрей К. Посмотреть сообщение
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();
если таблицу TmpTable сделать не temporary, то она нормально сортируется
Как вариант - добавить поле для сортировки во временную таблицу и заполнять его при вставке записей.
Старый 06.02.2008, 14:04   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Предлолжение:
Сделать 2 закладки (TabPages). Вторую назвать "Развернутые данные" или как-то наподобие.
Ни одну не скрывать - пользователи смогут смотреть и то и то, и при этом не придется извратом заниматься, пытаясь подменять источники..
Старый 06.02.2008, 14:09   #14  
dns is offline
dns
Участник
 
19 / 13 (1) ++
Регистрация: 11.05.2007
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Предлолжение:
Сделать 2 закладки (TabPages). Вторую назвать "Развернутые данные" или как-то наподобие.
Ни одну не скрывать - пользователи смогут смотреть и то и то, и при этом не придется извратом заниматься, пытаясь подменять источники..
Предлагали уже "подмену" tab'ов, но, как я понял надо именно так и ни как иначе

Если уже пошла такая пьянка, могу предложить Table поюзать... Если данных не много
Старый 06.02.2008, 14:40   #15  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
Да правда, табы использовать не хотят...
dns , с MAP надо поразбираться (еще не работал толком, а времени мало) ....спасибо за подсказку с полем сортировки , но
как я буду его это поле заполнять? когда бегу по Query (попутно занося его строки в TmpTable), в котором в OrderMode выставлена группировка ?



Последний раз редактировалось Андрей К.; 06.02.2008 в 14:46.
Старый 06.02.2008, 14:48   #16  
dns is offline
dns
Участник
 
19 / 13 (1) ++
Регистрация: 11.05.2007
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
Да правда, табы использовать не хотят...
dns , с MAP надо поразбираться (еще не работал толком, а времени мало) ....спасибо за подсказку с полем сортировки , но
как я буду его это поле заполнять? когда бегу по Query (попутно занося его строки в TmpTable), в котором в OrderMode выставлена группировка ?


Скорее всего да... или можете привести код, в котором заполняете временную таблицу.
Старый 06.02.2008, 15:07   #17  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
А по мойму это проще организавать через временную таблицу, грид работает с одной временной таблицей, а в зависимости от условий таблица заполняется данными из разных источников (подобие мапа).
Старый 06.02.2008, 15:11   #18  
dns is offline
dns
Участник
 
19 / 13 (1) ++
Регистрация: 11.05.2007
Цитата:
Сообщение от konopello Посмотреть сообщение
А по мойму это проще организавать через временную таблицу, грид работает с одной временной таблицей, а в зависимости от условий таблица заполняется данными из разных источников (подобие мапа).
Предлагали уже смотри выше.
Старый 06.02.2008, 15:28   #19  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
dns в аксапте нельзя сортировать и группировать одновременно, нельзя будет заполнить поле сортировки по ходу заполнения временной таблицы...или я ошибаюсь ?
Старый 06.02.2008, 17:34   #20  
dns is offline
dns
Участник
 
19 / 13 (1) ++
Регистрация: 11.05.2007
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
dns в аксапте нельзя сортировать и группировать одновременно, нельзя будет заполнить поле сортировки по ходу заполнения временной таблицы...или я ошибаюсь ?
Ошибаетесь... Запрос с группировками вернет результат отсортированным, в таком же порядке, в котором указана группировка.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: Filter-by-Grid Blog bot DAX Blogs 2 30.05.2012 13:39
неопределенный (или common?) datasource grid'а andy239 DAX: Программирование 7 19.07.2006 17:05
Как при переборе DataSource не перерисовывать Grid korvin DAX: Программирование 6 17.02.2006 11:46
query->DataSource->grid ald DAX: Программирование 2 06.02.2004 09:24
DataSource, Table и Grid. Yuri Safronov DAX: Программирование 3 05.09.2002 15:04
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:40.