跳转至

汇总

TreeList 控件允许针对列计算总计汇总。总计汇总是针对所有行计算的聚合函数。控件必须能够同时访问所有行,才能正确计算总计汇总。

注意

将 AllowDynamicDataLoading 属性设置为 false 可禁用动态数据加载,使 TreeList 控件能够同时访问所有行。

treelist-summaries

汇总计算的主要功能包括:

  • 内置汇总函数:Sum、Min、Max、Count 和 Average。
  • 运行时管理 — 用户可以单击页脚单元格中的 Σ 按钮添加汇总,或打开 Summary Editor 对话框执行高级汇总操作。
  • 每列多个汇总 — 每一列可以显示针对该列值计算的多个汇总。
  • 跨列汇总 — 可以针对一列计算汇总,并在另一列中显示。
  • 自定义汇总 — 可以处理 CustomSummary 事件,按您自己的逻辑计算自定义聚合函数。

启用总计汇总

总计汇总显示在控件的页脚中。

将 ShowTotalSummaries 属性设置为 true,即可显示汇总页脚并启用总计汇总计算。汇总页脚位于 TreeListControl 底部、所有行之下。该页脚默认处于隐藏状态。

<mxtl:TreeListControl x:Name="treeList" ShowTotalSummaries="True" AllowDynamicDataLoading="False">...</mxtl:TreeListControl>

汇总页脚包含所有列的汇总单元格。如果启用了用户汇总自定义(默认启用),汇总单元格会包含 Σ 按钮,用于显示汇总菜单和汇总编辑器。

treelist-summaries-sigma-button

相关 API

定义总计汇总

使用 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 的列的标题。

    treelist-summaries-labels

用户汇总自定义

默认情况下,用户可以在运行时编辑汇总。在此模式下,汇总单元格会显示 Σ 按钮,用于打开汇总菜单:

treelist-summaries-summary-menu

用户可以使用此菜单:

  • 通过切换汇总函数旁边的复选框来添加或删除汇总。

    treelist-summaries-summary-menu-multiple-items

  • 选择 Customize 打开 Summary Editor 对话框。

    treelist-summaries-summary-editor

    在此对话框的 Summaries 选项卡中,用户可以创建跨列汇总(针对一列计算但显示在另一列中的汇总)。

    在 Order 选项卡中,用户可以更改现有汇总的显示顺序。

    treelist-summaries-summary-editor-order-tab

相关 API

  • AllowEditingTotalSummaries — 获取或设置用户是否可以编辑总计汇总。

    此属性只影响用户修改汇总的能力,不影响在代码中执行的汇总计算。

自定义汇总

自定义汇总允许您使用自己的逻辑计算聚合值。

要添加自定义汇总,请执行以下操作:

示例 - 计算自定义总计汇总

以下示例创建一个自定义总计汇总(名为“Needs Attention”),用于计算需要关注的资产数量。这些资产的状态为 Maintenance、Degraded、Offline 或 Decommissioned。

treelist-summaries-custom-summary-example

<!-- 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

获取汇总值

您可以使用以下 API 在代码中检索已计算的汇总值:

object? totalValue = treeList.GetTotalSummaryValue(summaryItem);



* 本页面使用机器翻译技术翻译。