31.05.2011, 16:02 | #1 |
Участник
|
Проблема с сортировкой на гриде
Axapta 3.0 SP4, две таблицы на гриде связаны по InnerJoin. Кликаю на хедер поля ZipCodeId второй таблицы. Сортировка вроде отрабатывает, но визуально записи расположены в беспорядке:
Код: BH14 8DW LA8 0NJ YO7 3NL DL10 5JU YO7 4AZ CA3 9SU CA1 2LW BD24 9NT Код: <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 |
Участник
|
посмотреть через мониторинг запросов SQL, что уходит на сервер
|
|
|
За это сообщение автора поблагодарили: Hyper (1). |
31.05.2011, 16:41 | #3 |
Участник
|
Спасибо за совет, разобрался.
Код: ORDER BY A.DATAAREAID,A.Field2,A.Field3,A.Field4,B.DATAAREAID DESC,B.ZIPCODEID DESC Странно вообще-то, я бы ожидал, что для пользователя результат изменения сортировки вручную должен быть предсказуемым. В конце концов, если он кликает на хедер поля основной таблицы, порядок записей изменяется верно, а то, что ZipCodeId берется из другой таблицы, пользователя интересует меньше всего. Насколько я понимаю, идеального решения у этой проблемы нет. Я собираюсь перенести сортировку по умолчанию из свойства Index в метод датасорса init(), но так-как при этом сортировка в двух таблицах так и останется независимой друг от друга, в некоторых случаях пользователям придется менять ее в форме Filter Records > Sorting. Последний раз редактировалось Hyper; 31.05.2011 в 16:43. |
|
31.05.2011, 17:24 | #4 |
MCT
|
В трешке должно быть свойство у источника данных, называется index и определяет порядок сортировки в гриде, этим свойством программно можно управлять, например.
__________________
Axapta book for developer |
|
31.05.2011, 17:43 | #5 |
Участник
|
|
|