当前位置: 欣欣网 > 码农

C# WPF GridControl数据汇总

2024-02-04码农

概述

dev的GridControl自带数据汇总的功能,想对表格数据在底部做一个简单的统计,百度了一下找了很多个博客都没啥用,最终果断查看dev官网实现,官网地址:

https://docs.devexpress.com/WPF/7354/controls-and-libraries/data-grid/data-summaries


介绍

GridControl允许您显示有关行组或单个数据列的摘要信息。例如,您可以显示记录数、最小值或最大值等。此摘要信息称为数据摘要。

总摘要是对视图中的所有数据行计算的聚合函数的值。汇总显示在「汇总」面板和「固定汇总」面板中。

以下列表描述了两个面板之间的区别:

无论相应列的位置和可见性如何,「固定摘要」面板中的值始终在屏幕上可见。面板将摘要向左或向右对齐。

摘要面板中的值显示在相应的列中。

设置DataViewBase.ShowFixedTotalSummary属性设置为true以显示Fixed Summary面板。

使用DataViewBase.TotalSummaryPosition属性以显示摘要面板并指定其位置。

如果要在「固定摘要」面板中显示相应的值,请将摘要的「对齐」属性设置为「左」或「右」。否则,该值将显示在摘要面板中。

在XAML中

照以下步骤在XAML中创建汇总:

将GridSummaryItem对象添加到GridControl.TotalSummary集合。

指定SummaryItemBase.FieldName和SummaryItemBase.SummaryType属性。

XAML

<dxg:GridControl...><dxg:GridControl.TotalSummary><dxg:GridSummaryItemSummaryType="Count"Alignment="Left"DisplayFormat="Total Users: {0}"/><dxg:GridSummaryItemFieldName="Age"SummaryType="Min"/><dxg:GridSummaryItemFieldName="Age"SummaryType="Max"/></dxg:GridControl.TotalSummary><dxg:GridControl.View><dxg:TableViewTotalSummaryPosition="Bottom"ShowFixedTotalSummary="True"/></dxg:GridControl.View></dxg:GridControl>

In Code

C#

using DevExpress.Data;using DevExpress.Xpf.Grid;// Add summaries to the GridControl's Total Summary collection.grid.TotalSummary.AddRange(new List<GridSummaryItem>() {// Create summary objects and specify their settings.new GridSummaryItem() { SummaryType = SummaryItemType.Count, Alignment = GridSummaryItemAlignment.Left, DisplayFormat = "Total Users: {0}" },new GridSummaryItem() { FieldName = "Age", SummaryType = SummaryItemType.Min },new GridSummaryItem() { FieldName = "Age", SummaryType = SummaryItemType.Max }});

Use the AddRange method to add multiple summaries to the collection.

计算所选内容的摘要

GridControl可以根据选定的行和单元格计算摘要。若要计算所选行/单元格的摘要,请设置SummaryItemBase.CalculationMode属性设置为SelectedRows或Mixed:

XAML

<dxg:GridControl...><!-- --><dxg:GridControl.View><dxg:TableViewTotalSummaryPosition="Bottom"/></dxg:GridControl.View><dxg:GridControl.TotalSummary><!-- The summary calculated against selected rows --><dxg:GridSummaryItemFieldName="Total"SummaryType="Sum"CalculationMode="SelectedRows"DisplayFormat="Selection Total=${0:N}"/><!-- The summary calculated against all rows --><dxg:GridSummaryItemFieldName="Total"SummaryType="Sum"DisplayFormat="Total=${0:N}"/></dxg:GridControl.TotalSummary></dxg:GridControl>

SummaryItemBase。CalculationMode属性允许您定义以下摘要计算机制:

AllRows

汇总值是根据所有行计算的。

SelectedRows

汇总值是根据所选行计算的。

Mixed

如果所选行的数量多于一行,则根据所选行计算汇总值;否则,针对所有行。

您也可以使用DataViewBase.SummaryCalculationMode属性将指定的计算模式应用于所有GridControl摘要。

实例

<dxg:GridControlAutoGenerateColumns="AddNew"EnableSmartColumnsGeneration="True"AllowLiveDataShaping="True"cal:Message.Attach="[Event SelectedItemChanged] = [Action GridControl_SelectedItemChanged($source,$event)];"ItemsSource="{Binding MemorandumShowList}"SelectedItem="{Binding SelectedItem}"Height="500"Foreground="Black"Margin="5,10,5,10" ><!--<dxg:GridControl.GroupSummary> <dxg:GridSummaryItem SummaryType="Count" /> </dxg:GridControl.GroupSummary>--><dxg:GridControl.TotalSummary><!--<dxg:GridSummaryItem SummaryType ="Average" FieldName="Borrower" DisplayFormat = "平均值:{0:f4}" Alignment="Right"/>--><dxg:GridSummaryItemSummaryType ="Sum"FieldName="Borrower"DisplayFormat = " 借方:{0:N}"Alignment="Right"/><dxg:GridSummaryItemSummaryType ="Sum"FieldName="Lender"DisplayFormat = " 贷方:{0:N}"Alignment="Right"/><!--<dxg:GridSummaryItem SummaryType="Count" DisplayFormat = " 计数:{0:0}" Alignment="Right"/>--></dxg:GridControl.TotalSummary><dxg:GridControl.View><dxg:TableViewShowTotalSummary="True"ShowFixedTotalSummary="True"AllowMoveColumnToDropArea="False"AllowGrouping="False"AutoExpandOnDrag="False"ShowDragDropHint="False"ShowGroupPanel="False"AllowColumnMoving="False"AllowResizing="False"Foreground="Black"RowIndicatorContentTemplate="{StaticResource rowIndicatorContentTemplate}" ><dxg:TableView.Row style>< styleTargetType="{x:Type dxg:RowControl}"><SetterProperty="dxg:GridViewBase.Background"Value="{Binding DateTime,Converter={StaticResource RowColorConverter}}"/>< style.Triggers><TriggerProperty="dxg:GridViewBase.IsFocusedRow"Value="True"><SetterProperty="Background"Value="Gray" /></Trigger></ style.Triggers></ style></dxg:TableView.Row style></dxg:TableView></dxg:GridControl.View><dxg:GridColumnHeader="摘要"FieldName="Summary"MinWidth="100"/><dxg:GridColumnHeader="科目"FieldName="Subject"MinWidth="100"/><dxg:GridColumnHeader="核算维度"FieldName="AccountingDimension"MinWidth="100" /><dxg:GridColumnHeader="借方"FieldName="Borrower"MinWidth="100"/><dxg:GridColumnHeader="贷方"FieldName="Lender"MinWidth="100"/><dxg:GridColumnFieldName="Operation"AllowSorting="True"Header="操作"Width="70"><dxg:GridColumn.CellTemplate><DataTemplate><!--<dxe:ButtonEdit ShowText="False" AllowDefaultButton="False"> <dxe:ButtonInfo Name="BtnDelete_Click" GlyphKind="Cancel" ToolTipService.ToolTip="删除" CommandParameter="{Binding id}" Command="{Binding BtnDelete_Click}"/> <dxe:ButtonInfo Name="BtnAdd_Click" GlyphKind="Plus" ToolTipService.ToolTip="添加" CommandParameter="{Binding id}" Command="{Binding BtnAdd_Click}" /> </dxe:ButtonEdit>--><StackPanelOrientation="Horizontal"><dx:SimpleButtonName="BtnAdd"Glyph="/Images/add.png"cal:Message.Attach="[Event Click]=[Action BtnAdd_Click]" /><dx:SimpleButtonName="BtnDelete"Glyph="/Images/remove.png"cal:Message.Attach="[Event Click]=[Action BtnDelete_Click]"/></StackPanel></DataTemplate></dxg:GridColumn.CellTemplate></dxg:GridColumn></dxg:GridControl>

结果显示