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

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

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

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

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

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

Значит тип этих столбцов не подразумевает сортировку.
Например в столбце отображается картинка, как по ней сортировать ?
...
Рейтинг: 0 / 0
DevExpress сортировка в Гриде не работает
    #39923412
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
было бы все так просто, я бы уже понял в чем дело,
смотрю что в источнике с данными.
...
Рейтинг: 0 / 0
DevExpress сортировка в Гриде не работает
    #39923473
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DevExpress сортировка в Гриде не работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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