Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DevExpress сортировка в Гриде не работает / 6 сообщений из 6, страница 1 из 1
06.02.2020, 12:00
    #39923296
yemets63
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress сортировка в Гриде не работает
TCXGrid кликаю по некоторым столбцам и они не сортируют, в чем может быть причина? свойства сортировки на компоненте на столбце включены, или я не все свойства знаю.

не все столбцы, а именно некоторые, сравнил свойства с теми что сортируют, отличий не нашел

в чем может быть дело?
...
Рейтинг: 0 / 0
06.02.2020, 12:18
    #39923311
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress сортировка в Гриде не работает
yemets63
TCXGrid кликаю по некоторым столбцам и они не сортируют, в чем может быть причина? свойства сортировки на компоненте на столбце включены, или я не все свойства знаю.

не все столбцы, а именно некоторые, сравнил свойства с теми что сортируют, отличий не нашел

в чем может быть дело?

Чnо по этому поводу пишут в документации?
...
Рейтинг: 0 / 0
06.02.2020, 12:31
    #39923327
zinpub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress сортировка в Гриде не работает
Какой режим у datacontroller, какой тип у столбца?
...
Рейтинг: 0 / 0
06.02.2020, 14:00
    #39923401
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress сортировка в Гриде не работает
yemets63
не все столбцы, а именно некоторые, сравнил свойства с теми что сортируют, отличий не нашел

Значит тип этих столбцов не подразумевает сортировку.
Например в столбце отображается картинка, как по ней сортировать ?
...
Рейтинг: 0 / 0
06.02.2020, 14:08
    #39923412
yemets63
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress сортировка в Гриде не работает
было бы все так просто, я бы уже понял в чем дело,
смотрю что в источнике с данными.
...
Рейтинг: 0 / 0
06.02.2020, 15:15
    #39923473
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress сортировка в Гриде не работает
yemets63,

У меня старая версия компонент, еще с приставкой "Dx" вместо сегодняшних "Cx". Были проблемы с сортировкой, например когда были NULL значения в ячейках. И не работала совсем сортировка по множеству колонок (Grid.OptionsBehavior = [....., edgoMultiSort, .....] ).

Исправил, написав свою функцию сравнения OnDxListeCompare, которую вызываю из обработчика OnCompare-события грида.

Предполагаю, если вы замените в моем коде "Dx" на "Cx", то и у вас заработает как нужно.

завернул в спойлер:
procedure OnDxListeCompare
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
procedure OnDxListeCompare(Sender: TObject; Node1, Node2: TdxTreeListNode;
   var Compare: Integer);
var
   i           : integer;
   Col         : TdxTreeListColumn;

   iColID      : integer;
   Var1        : variant;
   Var2        : variant;
   IsVar1NULL  : boolean;
   IsVar2NULL  : boolean;

   Grid        : TCustomdxTreeListControl;
begin
   Compare:=0;

   if Sender is TCustomdxTreeList then
   begin
      Grid:=TCustomdxTreeListControl(Sender);

      for i:=0 to Grid.SortedColumnCount-1 do
      begin
         Col:=Grid.SortedColumns[i];
         iColID:=Col.Index;

         Var1:=Node1.Values[iColID];
         Var2:=Node2.Values[iColID];

         IsVar1NULL:=VarIsEmpty(Var1) or VarIsNull(Var1);
         IsVar2NULL:=VarIsEmpty(Var2) or VarIsNull(Var2);

         if IsVar1NULL or IsVar2NULL then
         begin
            if IsVar1NULL and IsVar2NULL then Compare:=0
            else
            if IsVar1NULL then Compare:=-1
            else
               Compare:=+1;
         end
         else
         begin
            if Var1<Var2 then Compare:=-1
            else
            if Var1>Var2 then Compare:=+1
            else
               Compare:=0;
         end;

         if Col.Sorted=csDown then Compare:=-Compare;

         if Compare<>0 then break;
      end; //for i
   end; //if Sender is TCustomdxTreeList
end;




и пример вызова

Код: pascal
1.
2.
3.
4.
5.
procedure TForm1.DxDBGrid1Compare(Sender: TObject; Node1,
  Node2: TdxTreeListNode; var Compare: Integer);
begin
   OnDxListeCompare(Sender, Node1, Node2, Compare);
end;
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DevExpress сортировка в Гриде не работает / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]