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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.11.2005, 11:22   #1  
ViV is offline
ViV
Axapta Retail User
Самостоятельные клиенты AX
Axapta Retail User
 
200 / 79 (3) ++++
Регистрация: 14.09.2005
Cool Сортировка в гриде с двумя DataSource
Есть грид, в котором отображаются данные из двух datasource - один подчинен другому по inner join.
Проблема в том, что не удается отсортировать данных в случае сортировки по полю подчиненной таблицы. После поиска по форуму было найдено следующее:
"в 2.5 сортировка по дочерним DSам работала только после удаления сортировки в родительском DS. Т.е. если сначала отсортировали по родителю, то про дочерние сортировки можно забыть. Исправлялось с помощью clearSortIndex на QBDS родителя."
У меня версия 3.0 но видимо ситуация не изменилась.
Была добавлена сл. строка в execute query
this.query().dataSourceName("Master").clearSortindex();
После этого если сортировать сразу по подчиненной - сортировка проходит.
Если сначала по родителю, а потом нажать на сортировку подчиненной - уже нет.

Подскажите как правильно снять родительскую сортировку?

P.S. Кстати в стандартной форме InventTable такая же ситуация - сортировка по ценам после сортировки по номенклатуре уже не проходит.
Старый 16.11.2005, 11:47   #2  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 909 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от ViV
...подчинен другому по inner join...
Если вам идей получше не предложат, то попробуйте приспособить для вашей формы view.
__________________
С уважением,
glibs®
Старый 16.11.2005, 12:50   #3  
Zan is offline
Zan
Участник
 
104 / 25 (1) +++
Регистрация: 22.07.2004
Адрес: I live in Moscow
2 glibs

View - это конечно хорошо.
Но вот как быть с добавлением и изменением записей при использовании View.

Если использовать для запросов и отчетов, то очень даже неплохой механизм.
Старый 16.11.2005, 13:12   #4  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 909 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Ну, извините... про обновление данных явно не написали, а я не подумал.
__________________
С уважением,
glibs®
Старый 16.11.2005, 13:23   #5  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,433 / 1079 (44) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Сообщение от Zan
2 glibsНо вот как быть с добавлением и изменением записей при использовании View.
написать edit-method.

С Уважением,
Георгий
Старый 16.11.2005, 13:36   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,729 / 845 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
рекомендации все теже - чистить сортировки на мастере (clearSortindex + sortClear)
и еще не забыть, что работать надо с ds.queryRun().query() (когда он есть)
Старый 16.11.2005, 14:46   #7  
ViV is offline
ViV
Axapta Retail User
Самостоятельные клиенты AX
Axapta Retail User
 
200 / 79 (3) ++++
Регистрация: 14.09.2005
To Warm: Спасибо за подсказку с queryrun(). Подскажите еще пожалуйста, где лучше чистить сортировки (в каком методе или при каких условиях). Если я чищу в execute query то у меня прекрасно работает сортировка по подчиненной, но по мастеру не работает вообще
Старый 16.11.2005, 15:19   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,729 / 845 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Сообщение от ViV
Если я чищу в execute query то у меня прекрасно работает сортировка по подчиненной, но по мастеру не работает вообще
Ничего удивительного... вы же ее чистите
(теоретический совет сам не пробовал) - Перед чисткой мастера сделайте проверку на наличие сортировок по дочерней таблице (sortFieldCount) и если их нет, то не делать чистку.

Ну или делать зачистку только на методе sort нужного столбца grid-а
Старый 16.11.2005, 15:47   #9  
ViV is offline
ViV
Axapta Retail User
Самостоятельные клиенты AX
Axapta Retail User
 
200 / 79 (3) ++++
Регистрация: 14.09.2005
Проверка наличия сортировок не помогает - переход от дочерней к главной обрабатывает некорректно. (поскольку в подчинной стоит сортировка - 1 столбец и уже на мастере 1 столбец - то чистка происходит, хотя нам она уже не нужна, а видимо переход и количество столбцов с сортировкой обрабатывается где-то в недрах super)

А если в sort - то возникает следующий интересный эффект -
по мастеру работает идеально.
по дочерней при щелчке по столбцу сортировка всегда идет по возрастанию...
(параметр в функцию sort всегда передается ascending)
если выбирать сортировку по правой клавише - работает.

Кто-нибудь может подсказать в какую еще сторону покапать?
Старый 17.11.2005, 12:29   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,555 / 2407 (86) +++++++++
Регистрация: 20.08.2005
Могу предложить следующее

1. Перекрывать Sort
2. В Sort проверять предыдущую сортировку по нужному полю. Если сортировка установлена, то передавать в super() параметр с обратной сортировкой, если нет, то с сортировкой по умолчанию. Для корректной работы с сортировкой по правой кнопке пропускать этот шаг при выборе сортировки в контекстном меню.
3. Сбрасывать сортировки для всех датасорусов перед вызовом super.

Во вложении приведен пример реализации
Вложения
Тип файла: zip GridSortDatasources.zip (3.1 Кб, 278 просмотров)
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: mazzy (5), kashperuk (1), simply2double (1).
Старый 17.11.2005, 15:26   #11  
ViV is offline
ViV
Axapta Retail User
Самостоятельные клиенты AX
Axapta Retail User
 
200 / 79 (3) ++++
Регистрация: 14.09.2005
AndyD, большое спасибо!
Все заработало
За это сообщение автора поблагодарили: kashperuk (1).
Старый 29.06.2006, 13:39   #12  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,353 / 2064 (77) +++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Спасибо за проект.
Есть небольшое замечание - он не работает, если на форме больше датасорсов, чем участвуют в гриде, по котором нужна сортировку делать.

В смысле, если есть не связанные с этим гридом датасорсы.
(если быть совсем точным, то в случае, если "левый" датасорс стоит первым)
Глюк в методе element.getSortOrder() - таблица передается одна, а датасорс берется первый, и он может быть не по этой таблице.

Но если изменить код там под свои нужны,то все супер.

Правда, еще есть один ньюанс.
Когда в гриде отображаются строки, и значение во всех - пустое - то сортировка вроде как не должна меняться, но из-за очистки предыдущей сортировки такое иногда происходит. Ну, да это уже не так важно.

Спасибо, еще раз
Старый 11.09.2007, 17:57   #13  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
К сожалению, если датасорс один, а пытаюсь сортировать edit-поле - не срастается
Старый 11.09.2007, 18:01   #14  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,353 / 2064 (77) +++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Цитата:
Сообщение от george040875 Посмотреть сообщение
К сожалению, если датасорс один, а пытаюсь сортировать edit-поле - не срастается
Еще раз.
Сколько бы ни было источников, по display и edit методам нельзя сортировать
Старый 05.06.2014, 15:22   #15  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
В Ax2012 R2 сортировка по подчиненным датасоурсам в общем случае работает

Но .... не работает, если родительский датасоурс - временная таблица inMemory. При этом _sortDirection правильный и query тоже с правильной сортировкой
С таблицей типа TempDB прекрасно работает

Последний раз редактировалось IKA; 05.06.2014 в 15:56.
Старый 05.06.2014, 15:55   #16  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
PS: Проблема в том, что не всегда можно легко заменить InMemory на TempDB.
Например, TempDB не позволяет configurationKey на ней указывать ...
Теги
ax2.5, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Динамическое создание DataSource на форме, и добавление элементов дизайна. epack DAX: Программирование 12 24.11.2010 15:31
Обновление таблицы в DataSource при ее изменении Андре DAX: База знаний и проекты 7 22.04.2008 13:16
Заполнение DataSource из постоянной и временной таблиц m_ax DAX: Программирование 2 21.06.2007 13:08
Сортировка в гриде Pegiy DAX: Функционал 15 06.12.2006 08:21
Сортировка в гриде kashperuk DAX: Программирование 11 29.06.2006 09:18
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:35.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.