Итоги¶
Контрол TreeList позволяет вычислять общие итоги по колонкам. Общие итоги — это агрегатные функции, вычисляемые по всем строкам. Чтобы правильно вычислять общие итоги, контролу необходим одновременный доступ ко всем строкам.
Примечание
Установите свойство AllowDynamicDataLoading в false, чтобы отключить динамическую загрузку данных и обеспечить контролу TreeList одновременный доступ ко всем строкам.
Основные возможности вычисления итогов:
- Встроенные функции итогов: Sum, Min, Max, Count и Average.
- Управление во время работы приложения — пользователи могут щёлкнуть кнопку Σ в ячейке нижней панели, чтобы добавить итоги или открыть диалог Summary Editor для расширенных операций с итогами.
- Несколько итогов на колонку — каждая колонка может отображать несколько итогов, вычисленных по значениям этой колонки.
- Итоги между колонками — можно вычислить итог по одной колонке и отобразить его в другой.
- Пользовательские итоги — можно обработать событие
CustomSummary, чтобы вычислить собственную агрегатную функцию по своей логике.
Включение общих итогов¶
Общие итоги отображаются в нижней панели контрола.
Установите свойство ShowTotalSummaries в true, чтобы отобразить панель итогов и тем самым включить вычисление общих итогов. Панель итогов отображается в нижней части TreeListControl, под всеми строками. Изначально эта панель скрыта.
<mxtl:TreeListControl x:Name="treeList" ShowTotalSummaries="True" AllowDynamicDataLoading="False">...</mxtl:TreeListControl>
Панель итогов содержит ячейки итогов для всех колонок. Если включена настройка итогов пользователем (по умолчанию), эти ячейки содержат кнопку Σ, которая открывает меню итогов и редактор итогов.
Связанный API
ShowTotalSummaries— возвращает или задаёт, отображается ли панель общих итогов и включено ли вычисление общих итогов.TotalSummaryPanelMinHeight— возвращает или задаёт минимальную высоту панели общих итогов.
Определение общих итогов¶
Используйте коллекцию TotalSummaries для определения общих итогов. Элементы этой коллекции — экземпляры класса SummaryItem. Каждый объект SummaryItem задаёт поле для вычисления итога, тип итога, колонку, в которой отображается результат, и другие параметры.
xmlns:mxdc="clr-namespace:Eremex.AvaloniaUI.Controls.DataControl;assembly=Eremex.Avalonia.Controls"
<mxtl:TreeListControl x:Name="treeList" ShowTotalSummaries="True" AllowDynamicDataLoading="False">
<mxtl:TreeListControl.TotalSummaries>
<mxdc:SummaryItem FieldName="Name" SummaryType="Count" />
<mxdc:SummaryItem FieldName="Utilization" SummaryType="Average" ShowInColumn="PowerConsumption" />
<mxdc:SummaryItem FieldName="Utilization" SummaryType="Max" />
<mxdc:SummaryItem FieldName="MaintenanceCost" SummaryType="Min" />
<mxdc:SummaryItem FieldName="MaintenanceCost" SummaryType="Max" />
<mxdc:SummaryItem FieldName="PowerConsumption" SummaryType="Sum" />
</mxtl:TreeListControl.TotalSummaries>
</mxtl:TreeListControl>
Связанный API
TotalSummaries— предоставляет доступ к коллекции элементов итогов (объектовSummaryItem), определяющих общие итоги.SummaryItem.FieldName— возвращает или задаёт имя поля данных, значения которого используются для вычисления итога.SummaryItem.Name— возвращает или задаёт имя элемента итога, по которому его можно идентифицировать. По имени можно получить элементы итогов из коллекцииTotalSummaries.SummaryItem.Tag— возвращает или задаёт пользовательские данные, связанные с этим элементомSummaryItem.SummaryItem.ShowInColumn— возвращает или задаёт имя поля колонки, которая отображает значение итога. Если свойство не задано, итог отображается в колонке, привязанной кFieldName.SummaryItem.SummaryType— возвращает или задаёт тип агрегатной функции (Sum,Min,Max,CountилиAverage).-
SummaryItem.Label— возвращает или задаёт пользовательскую подпись, отображаемую вместо подписи итога по умолчанию. Подпись по умолчанию показывает название функции итога. Если итог отображается в другой колонке (см.ShowInColumn), подпись также показывает заголовок колонки, привязанной кSummaryItem.FieldName.
Настройка итогов пользователем¶
По умолчанию итоги могут редактироваться пользователями. В этом режиме ячейки итогов отображают кнопку Σ, открывающую меню итогов:
С помощью этого меню пользователи могут:
-
Добавлять и удалять итоги, устанавливая и снимая флажки рядом с функциями итогов.
-
Выбрать
Customize, чтобы открыть диалогSummary Editor.На вкладке
Summariesэтого диалога пользователи могут создавать итоги между колонками (итоги, вычисленные по одной колонке, но отображаемые в другой).На вкладке
Orderможно изменить порядок отображения существующих итогов.
Связанный API
-
AllowEditingTotalSummaries— возвращает или задаёт, могут ли пользователи редактировать общие итоги.Это свойство влияет только на возможности пользователей изменять итоги и не влияет на вычисления итогов, выполняемые в коде.
Пользовательские итоги¶
Пользовательские итоги позволяют вычислять агрегатные значения по вашей собственной логике.
Чтобы добавить пользовательский итог, выполните следующие действия:
-
Создайте объект
SummaryItemи задайте его свойствуSummaryItem.SummaryTypeзначениеCustom. -
Добавьте этот
SummaryItemв коллекциюTotalSummaries. -
Обработайте событие
CustomSummary, чтобы вручную вычислить значение для этогоSummaryItem.Присвойте параметру события
e.SummaryValueсвой результат.При обработке события
CustomSummaryиспользуйте коллекциюe.Nodesдля перебора целевых узлов (строк).
Пример — вычисление пользовательского общего итога¶
Этот пример создаёт пользовательский общий итог (с названием «Needs Attention»), который вычисляет число активов, требующих внимания. Это активы со статусом Maintenance, Degraded, Offline или Decommissioned.
<!-- XAML -->
<mxtl:TreeListControl x:Name="treeList" CustomSummary="OnCustomSummary">
<mxtl:TreeListControl.TotalSummaries>
<mxdc:SummaryItem FieldName="Status" SummaryType="Custom" Label="Needs Attention"/>
<mxdc:SummaryItem FieldName="Name" SummaryType="Count" />
</mxtl:TreeListControl.TotalSummaries>
</mxtl:TreeListControl>
// Code-behind
void OnCustomSummary(object sender, TreeListCustomSummaryEventArgs e)
{
int assetsRequiringAttention = 0;
foreach (var node in e.Nodes)
{
var status = (AssetStatus)treeList.GetCellValue(node, e.SummaryItem.FieldName);
if (status is AssetStatus.Maintenance or AssetStatus.Degraded or AssetStatus.Offline or AssetStatus.Decommissioned)
assetsRequiringAttention++;
}
e.SummaryValue = assetsRequiringAttention;
}
Связанный API
CustomSummary— возникает при вычислении значения итога. Используйте параметр событияSummaryValue, чтобы передать пользовательское значение итога.
Получение значений итогов¶
Вычисленные значения итогов можно получить в коде с помощью следующего API:
TreeListControl.GetTotalSummaryValue— возвращает вычисленное значение общего итога.
* Эта страница переведена с использованием технологий машинного перевода.







