概述
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>
结果显示