5.5.2.1.18. GroupTable
Компонент GroupTable
- это таблица с возможностью динамической группировки по любому полю. Для того чтобы сгруппировать таблицу по какой-либо колонке, нужно в заголовке таблицы перетащить эту колонку в позицию слева от элемента . Сгруппированные значения можно разворачивать и сворачивать с помощью кнопок /.
XML-имя компонента: groupTable
.
Компонент реализован только для блока Web Client. В Desktop Client ведет себя как обычная таблица.
Для GroupTable
в атрибуте datasource
элемента rows
должен быть указан groupDatasource. В противном случае группировка работать не будет.
Пример использования:
<dsContext>
<groupDatasource id="ordersDs" class="com.sample.sales.entity.Order"
view="order-with-customer">
<query>
select o from sales$Order o order by o.date
</query>
</groupDatasource>
</dsContext>
<layout>
<groupTable id="ordersTable" width="100%">
<columns>
<group>
<column id="date"/>
</group>
<column id="customer.name"/>
<column id="amount"/>
</columns>
<rows datasource="ordersDs"/>
</groupTable>
group
− необязательный элемент, может в единственном экземпляре находиться внутри columns. Содержит набор элементов column
, по которым будет выполняться первоначальная группировка при открытии экрана.
Элемент column
может содержать атрибут groupAllowed
с булевым значением. С помощью этого атрибута можно запретить пользователю группировать таблицу по данной колонке.
При включенном атрибуте aggregatable
таблица отображает результаты агрегации по всем строкам в дополнительной строке вверху, а также результаты агрегации по группам. Отображение агрегации по всем строкам можно отключить, установив false
в атрибуте showTotalAggregation
.
При включенном атрибуте multiselect
клик по строке группировки с зажатой клавишей Ctrl разворачивает группу (если была свёрнута) и применяет выделение ко всем строкам этой группы. При этом, если вся группа выделена, Ctrl+click не снимает выделение со всей группы. Вы по-прежнему можете снять выделение с отдельных строк, пользуясь стандартным поведением клавиши Ctrl.
-
Методы интерфейса
GroupTable
: -
-
groupByColumns()
- применяет группировку по заданным колонкам.В примере ниже таблица будет сгруппирована сначала по колонке
department
, а затем - по колонкеcity
:groupTable.groupByColumns("department", "city");
-
ungroupByColumns()
- снимает группировку по заданным колонкам.Следующий пример снимет группировку по
department
, однако группировка по колонкеcity
из предыдущего примера будет сохранена:groupTable.ungroupByColumns("department");
-
ungroup()
- снимает группировку по всем колонкам.
-
В остальном функциональность GroupTable
аналогична простой таблице Table.
- Атрибуты groupTable
-
align - aggregatable - aggregationStyle - columnControlVisible - contextMenuEnabled - editable - enable - height - id - multiLineCells - multiselect - presentations - reorderingAllowed - settingsEnabled - showTotalAggregation - sortable - stylename - tabIndex - textSelectionEnabled - visible - width
- Элементы groupTable
-
actions - buttonsPanel - columns - rows - rowsCount
- Элементы columns
- Атрибуты column
-
align - caption - captionProperty - collapsed - dateFormat - editable - groupAllowed - id - link - linkInvoke - linkScreen - linkScreenOpenType - maxTextLength - optionsDatasource - resolution - sortable - visible - width
- Элементы column
- Атрибуты rows
- API
-
addColumnCollapseListener - groupByColumns - setClickListener - ungroup - ungroupByColumns