概述
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>
結果顯示