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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.05.2011, 16:02   #1  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
? Проблема с сортировкой на гриде
Axapta 3.0 SP4, две таблицы на гриде связаны по InnerJoin. Кликаю на хедер поля ZipCodeId второй таблицы. Сортировка вроде отрабатывает, но визуально записи расположены в беспорядке:
Код:
BH14 8DW
LA8 0NJ
YO7 3NL
DL10 5JU
YO7 4AZ
CA3 9SU
CA1 2LW
BD24 9NT
XML в конце executeQuery выдает следующее:
Код:
<Query Name="" Title="" Form="SysQueryForm" UserUpdate="Yes" Version="11" Literals="Default" Interactive="Yes" AllowCheck="Yes" RecordLevelSecurity="Yes" NextUniqueId="1002" >
  <methods />
  <Data_Sources>
    <datasource Name="Table1" Table="Table1" UniqueId="1000" Company="" FirstOnly="No" FirstFast="No" AllowAdd="All_fields" OrderMode="Order_by" FetchMode="1:n" JoinMode="InnerJoin" Update="No" Relations="No" Enabled="Yes" >
      <fieldlist Dynamic="Yes" >
      </fieldlist>
      <order>
        <SortOrder>
        </SortOrder>
      </order>
      <Ranges>
      </Ranges>
      <Data_Sources>
        <datasource Name="Table2" Table="Table2" UniqueId="1001" Company="" FirstOnly="No" FirstFast="No" AllowAdd="All_fields" OrderMode="Order_by" FetchMode="1:1" JoinMode="InnerJoin" Update="No" Relations="No" Enabled="Yes" >
          <fieldlist Dynamic="Yes" >
          </fieldlist>
          <order>
            <field Table="Table2" Field="ZipCodeId" Ordering="DESCENDING" AutoHeader="No" HeaderDetailLevel="Auto" AutoSum="No" SumDetailLevel="Auto" />
          </order>
          <Ranges>
          </Ranges>
          <Data_Sources>
          </Data_Sources>
          <Relations>
            <association Table="Table1" RelatedTable="Table2" Field="Field1" RelatedField="Field1" />
          </Relations>
        </datasource>
      </Data_Sources>
    </datasource>
  </Data_Sources>
</Query>
Никаких проблем с ним, вроде, нет.
select из джоба сортирует верно:
X++:
static void Job12(Args _args)
{
    Table1  table1;
    Table2  table2;
    int i;
    ;

    while select table1
    join table2
        order by ZipCodeId
        where table2.Field1 == table1.Field1
    {
        i++;
        info(strfmt("%1,%2", i, table2.ZipCodeId));
        if (i>1000)
            break;
    }
}
Есть какие-нибудь идеи, в чем может быть проблема?
Старый 31.05.2011, 16:08   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
посмотреть через мониторинг запросов SQL, что уходит на сервер
За это сообщение автора поблагодарили: Hyper (1).
Старый 31.05.2011, 16:41   #3  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Спасибо за совет, разобрался.
Код:
ORDER BY A.DATAAREAID,A.Field2,A.Field3,A.Field4,B.DATAAREAID DESC,B.ZIPCODEID DESC
Это происходит из-за того, что в свойствах Index основной таблицы был указан индекс, по которому происходила сортировка по умолчанию - я этого сразу не заметил.

Странно вообще-то, я бы ожидал, что для пользователя результат изменения сортировки вручную должен быть предсказуемым. В конце концов, если он кликает на хедер поля основной таблицы, порядок записей изменяется верно, а то, что ZipCodeId берется из другой таблицы, пользователя интересует меньше всего.

Насколько я понимаю, идеального решения у этой проблемы нет. Я собираюсь перенести сортировку по умолчанию из свойства Index в метод датасорса init(), но так-как при этом сортировка в двух таблицах так и останется независимой друг от друга, в некоторых случаях пользователям придется менять ее в форме Filter Records > Sorting.

Последний раз редактировалось Hyper; 31.05.2011 в 16:43.
Старый 31.05.2011, 17:24   #4  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
В трешке должно быть свойство у источника данных, называется index и определяет порядок сортировки в гриде, этим свойством программно можно управлять, например.
__________________
Axapta book for developer
Старый 31.05.2011, 17:43   #5  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от MikeR Посмотреть сообщение
должно быть свойство у источника данных, называется index и определяет порядок сортировки в гриде
Да, я об этом свойстве и написал постом выше.
Теги
ax3.0, grid, грид, сортировка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с выгрузкой отчетов Reporting Services в AX2009 oleg_e DAX: Администрирование 14 18.01.2012 19:08
Две таблицы в гриде Prophetic DAX: Программирование 14 23.09.2010 15:02
Открытие формы с деталями активной записи в гриде sweeper DAX: Программирование 4 19.09.2008 15:55
проблема с display методом kitty DAX: Программирование 6 29.11.2007 19:24
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20

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

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

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