Группировка Winforms UltraGrid Infragistics по двум столбцам

Я работаю над приложением WinForms vb.net, где вы можете увидеть сетку, подобную той, что показана на прикрепленном рисунке, и мне нужно сгруппировать по первым двум столбцам («Группа» и «Область»).

Как вы можете видеть на рисунке, мой оператор выбора SQL возвращает много одинаковых «Grupo» и «Area» с разными «identificacion» (последний видимый столбец), и способ, которым мне нужно его представить, более или менее такой же, как вы можете в настоящее время см. на картинке, но с чем-то вроде, например, знака + сбоку, который при нажатии расширяется и показывает весь полный список строк и столбцов (не сгруппированных), но по одной строке для каждого отдельного «идентификатора».

Мне удалось сделать подход с SortedColums со следующим:

ulgListaSel.DisplayLayout.ViewStyleBand = Infragistics.Win.UltraWinGrid.ViewStyleBand.OutlookGroupBy

Dim band As UltraGridBand = ulgListaSel.DisplayLayout.Bands(0)
Dim sortedColumns As SortedColumnsCollection = band.SortedColumns
sortedColumns.Add("c_area", False, True)
sortedColumns.Add("c_grupo", False, True)

но данные не отображаются так, как я ищу.

То, что я получаю с кодом ниже, показано на рисунке 2, но вы увидите, что перед расширением отображается только столбец «Площадь», и по умолчанию мне нужно, чтобы все столбцы с одинаковым значением отображались (все, кроме «identificacion»).

Кстати, я использую UltraGrid v14.2

Заранее спасибо.

введите здесь описание изображения

введите здесь описание изображения


person Diego Perez    schedule 31.01.2018    source источник


Ответы (1)


Если я правильно понимаю вас здесь, вы хотели бы иметь группу для каждой строки, потому что единственные различия заключаются в значениях столбца «identificacion»? Или вы хотели бы видеть все значения в groupByRow, кроме «идентификации», и иметь только одну группу?

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

В обоих случаях вы можете создать и добавить новый несвязанный столбец в событии InitializeLayout вашего UltraGrid, используя коллекцию столбцов корневой полосы (0), а затем в событии IntializeRow заполнить значения этого нового столбца на основе ваших требований, либо используя значения всех ячеек (чтобы получить то же количество групп, что и количество различий в столбце «идентификация»), или объединение значений всех столбцов без значений в «идентификации», что закончилось бы с одной группой только в конце.

Кроме того, как только вы это сделаете, вам придется снова использовать событие InitializeLayout вашего UltraGrid и Group by UltraGrid, с помощью недавно заполненного столбца Unbound, добавив его в Sorted Columns, используя тот же подход, который использовался для добавления другого колонки там.

person Danko Valkov    schedule 16.02.2018