Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 DevExpress Группировка и отображение.  [new]
os2007
Member

Откуда:
Сообщений: 39
Такая ситуация:

В HEADER перетаскиваю колонку, коорая содержит название чего либо.
Происходит группировка по этойц колонке. Пока все нормально.
Но вот отображение сгрупированных данных - меня не устраивает - они отображаются в отсортированном виде, причем по имени (колонка стринговая). А мне нужно чтобы отображение шло с сортировкой по другому полю (по int). Или хотя бы вообще без сортировки, потому что сортировка по стринговому полю меня точно не устраивает.
Это как то возможно сделать?
17 ноя 09, 15:03    [7940028]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10896

Как вы себе представляете группировку без сортировки?

Posted via ActualForum NNTP Server 1.4

17 ноя 09, 15:31    [7940298]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
os2007
Member

Откуда:
Сообщений: 39
RENaissance,

Не совсем так.
Давайте по очереди:
1. данные сгрупированы:
2. В гриде отображаются группы, которые можно развернуть, например:

+Подразделение 2
+Подразделение 3
+Подразделение 4
+Сектор 1

3. Отображение этих групп в гриде - подчинено правилу: Отсортированы по алфавиту (можно включить обратную сортировку)

Проблема:

Мне нужно показывать группы не по алфавиту. А скажем по другому полю, например по индексу групп (у них есть ID)

Если обьяснения не достаточно - я могу более глубокие примеры привести с табличками и данными
17 ноя 09, 15:56    [7940569]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10896

os2007

RENaissance,

Не совсем так.
Давайте по очереди:
1. данные сгрупированы:
2. В гриде отображаются группы, которые можно развернуть, например:

+Подразделение 2
+Подразделение 3
+Подразделение 4
+Сектор 1

3. Отображение этих групп в гриде - подчинено правилу: Отсортированы по
алфавиту (можно включить обратную сортировку)

Проблема:

Мне нужно показывать группы не по алфавиту. А скажем по другому полю,
например по индексу групп (у них есть ID)

Если обьяснения не достаточно - я могу более глубокие примеры привести с
табличками и данными

Так не получится.

З.Ы Но можно через известное место.

Posted via ActualForum NNTP Server 1.4

17 ноя 09, 15:58    [7940592]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
Gator
Member

Откуда: Москва
Сообщений: 14979
os2007, Ну и группируйте их по ID
17 ноя 09, 16:07    [7940663]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
os2007
Member

Откуда:
Сообщений: 39
Можно. Приэтом в Header-е будет выпадающий список с индексами подразделений (а не с названиями, как нужно).
И отображаемое "дерево" которое плучится притакой групировке - будет в таком виде:

+1
+2
+3

То есть развертываются уже не читаемые имена, а индексы.
А нужно чтобы были названия, соответсвующие данным индексам.
17 ноя 09, 16:15    [7940727]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
Кости Гамлета
Member [заблокирован]

Откуда:
Сообщений: 523
RENaissance

Так не получится.

З.Ы Но можно через известное место.

Я ошибся. Можно. Смотрим на событие OnCompare у TDataController'а. В аттаче скрин примера.

К сообщению приложен файл. Размер - 0Kb
17 ноя 09, 16:30    [7940866]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
os2007
Member

Откуда:
Сообщений: 39
Кости Гамлета
RENaissance

Так не получится.

З.Ы Но можно через известное место.

Я ошибся. Можно. Смотрим на событие OnCompare у TDataController'а. В аттаче скрин примера.


Ого! Спасибо. Попробую разобраться )
17 ноя 09, 16:37    [7940947]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
os2007
Member

Откуда:
Сообщений: 39
Кости Гамлета
RENaissance

Так не получится.

З.Ы Но можно через известное место.

Я ошибся. Можно. Смотрим на событие OnCompare у TDataController'а. В аттаче скрин примера.


Мде, у меня пишет что HELP зщ событию onCompare отсутсвует )
Не могли бы коротко описать что нужно в событи делать:

procedure TForm1.cxGrid1DBTableView1DataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin

end;
17 ноя 09, 16:43    [7940998]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10896

os2007

Мде, у меня пишет что HELP зщ событию onCompare отсутсвует )
Не могли бы коротко описать что нужно в событи делать:

procedure TForm1.cxGrid1DBTableView1DataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin

end;

if ADataController.Values[ARecordIndex1, <индекс колонки id>] < ADataController.Values[ARecordIndex1, <индекс колонки id>] then
   Compare := -1
else
   if ADataController.Values[ARecordIndex1, <индекс колонки id>] = ADataController.Values[ARecordIndex1, <индекс колонки id>] then
     Compare := 0
   else
     Compare := 1;

Posted via ActualForum NNTP Server 1.4

17 ноя 09, 16:46    [7941027]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
Gator
Member

Откуда: Москва
Сообщений: 14979
os2007, ExpressDataController Help -> TcxCustomDataController.OnCompare
17 ноя 09, 16:48    [7941046]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
os2007
Member

Откуда:
Сообщений: 39
RENaissance

os2007

Мде, у меня пишет что HELP зщ событию onCompare отсутсвует )
Не могли бы коротко описать что нужно в событи делать:

procedure TForm1.cxGrid1DBTableView1DataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin

end;

if ADataController.Values[ARecordIndex1, <индекс колонки id>] < ADataController.Values[ARecordIndex1, <индекс колонки id>] then
   Compare := -1
else
   if ADataController.Values[ARecordIndex1, <индекс колонки id>] = ADataController.Values[ARecordIndex1, <индекс колонки id>] then
     Compare := 0
   else
     Compare := 1;



Большое вам спасибо за участие :)

Может тогда заодно подскажите и ещё один момент:
При использовании группировки (перетаскиванием колонки в Header), грид отображает информацию в виде:

+Наименование подразделения: Отдел 1
+Наименование подразделения: Отдел 2
+Наименование подразделения: Отдел 3

Где "Наименование подразделения" это Caption у Column, которую мы перетащили в Header. Можно ли как то избавиться от этой надписи. Дело в том что если в Caption ее убрать, тогда в выпадающем списке не будт названия (у того что висит выше в Нeader). И как бы странно будет выбирать какие то значения из списка без названия :)
17 ноя 09, 16:53    [7941082]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10896

os2007, смотрите в сторону события OnCustomDrawGroupCell, в котором берем AViewInfo.Text и заменяем на нужный текст - находим точку с запятой и берем
все, что справа.

Posted via ActualForum NNTP Server 1.4

17 ноя 09, 16:57    [7941121]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
os2007
Member

Откуда:
Сообщений: 39
RENaissance

os2007, смотрите в сторону события OnCustomDrawGroupCell, в котором берем AViewInfo.Text и заменяем на нужный текст - находим точку с запятой и берем
все, что справа.


Суть понял - думаю разберусь. Ещё одно спасибо)
Кстати, по предыдущей проблеме - вылезла другая проблема:

Сортировка - заработала - она верная, но перестала при этом работать группировка по тем полям что я вытащил в Header.
ТОчнее я вытащил 2. Работает только по первому. Второе игнорирует ((( так что проблема осталась (((

К сообщению приложен файл. Размер - 0Kb
17 ноя 09, 17:36    [7941360]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: DevExpress Группировка и отображение.  [new]
DoctorRoot
Member

Откуда:
Сообщений: 18
Для нормальной работы сортировки надо писать так:

procedure TForm2.cxGrid1DBBandedTableView1DataControllerCompare(
  ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
  AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin
if ADataController.Values[ARecordIndex1, {Индекс столбца}] < ADataController.Values[ARecordIndex2, {Индекс столбца}] then
   Compare := -1
else
   if ADataController.Values[ARecordIndex1, {Индекс столбца}] = ADataController.Values[ARecordIndex2 {Индекс столбца}] then
     Compare := 0
   else
     Compare := 1;
end;


Например для сортировки по столбцу №2 код будет выглядеть следующим образом:

procedure TForm2.cxGrid1DBBandedTableView1DataControllerCompare(
  ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
  AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin
if ADataController.Values[ARecordIndex1, 2] < ADataController.Values[ARecordIndex2, 2] then
   Compare := -1
else
   if ADataController.Values[ARecordIndex1, 2] = ADataController.Values[ARecordIndex2, 2] then
     Compare := 0
   else
     Compare := 1;
end;


Ну вот и группировка есть и сортировка как надо ...
20 июн 12, 20:52    [12748829]     Ответить | Цитировать Сообщить модератору
 Re: DevExpress Группировка и отображение.  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6599
Товарищи, пролоббируйте кто-нибудь из кругов, приближенных к администрации сайта, эти мои 2 предложения относительно старых топиков
  • 10321035
  • и 10325091

    я там пресложения по улучшению сайта высказал:
    + screenshots

    Картинка с другого сайта.
    Картинка с другого сайта.
  • 20 июн 12, 21:12    [12748896]     Ответить | Цитировать Сообщить модератору
     Re: DevExpress Группировка и отображение.  [new]
    vavan
    Member

    Откуда: Казань
    Сообщений: 3474
    DoctorRoot
    Для нормальной работы сортировки надо писать так

    ну а для совсем нормальной работы надо переписать с учетом B198486
    21 июн 12, 10:25    [12750753]     Ответить | Цитировать Сообщить модератору
    Между сообщениями интервал более 1 года.
     Re: DevExpress Группировка и отображение.  [new]
    capuzi
    Member

    Откуда:
    Сообщений: 37
    vavan
    ... ну а для совсем нормальной работы надо переписать с учетом B198486


    Вот как раз по поводу этого бага, знает ли кто-нибудь нормальное решение без правок исходников для случая, когда ARecordIndex1 или ARecordIndex2 имеют отрицательные значения?
    13 фев 20, 17:12    [22079455]     Ответить | Цитировать Сообщить модератору
     Re: DevExpress Группировка и отображение.  [new]
    vavan
    Member

    Откуда: Казань
    Сообщений: 3474
    capuzi, а там до сих пор отрицательные присылают?
    14 фев 20, 10:09    [22079773]     Ответить | Цитировать Сообщить модератору
     Re: DevExpress Группировка и отображение.  [new]
    capuzi
    Member

    Откуда:
    Сообщений: 37
    vavan, версия Dev 6.57 и да, к сожалению RecordIndex периодически отрицательный присылают.
    В варианте с группировками и сортировкой по полю, в группировке не участвующем, после редактирования данных в гриде все валится из-за отрицательных RecordIndex, а если обрабатывать только RecordIndex > 0, то сворачивается ряд узлов.
    14 фев 20, 11:00    [22079809]     Ответить | Цитировать Сообщить модератору
     Re: DevExpress Группировка и отображение.  [new]
    vavan
    Member

    Откуда: Казань
    Сообщений: 3474
    capuzi
    версия Dev 6.57
    больно слышать. сам на 12.2.4 застрял
    14 фев 20, 11:10    [22079817]     Ответить | Цитировать Сообщить модератору
    Все форумы / Delphi Ответить