當前位置: 妍妍網 > 碼農

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>

結果顯示