|
// xaml Code
<syncfusion:SfDataGrid.CaptionSummaryRow>
<syncfusion:GridSummaryRow Title="LastMonth {TotalSalary} CurrentMonth {ProductCount} and Avg {Sale_Percentage}"
ShowSummaryInRow="True">
<syncfusion:GridSummaryRow.SummaryColumns>
<syncfusion:GridSummaryColumn Name="TotalSalary"
Format="{}{Sum:c}"
MappingName="OrderID"
SummaryType="DoubleAggregate" />
<syncfusion:GridSummaryColumn Name="ProductCount"
Format="{}{Sum:c}"
MappingName="EmployeeID"
SummaryType="DoubleAggregate" />
<syncfusion:GridSummaryColumn Name="Sale_Percentage"
CustomAggregate="{StaticResource customAggregate}"
Format="'{_Percentage:c}'"
MappingName="Freight"
SummaryType="Custom" />
</syncfusion:GridSummaryRow.SummaryColumns>
</syncfusion:GridSummaryRow>
</syncfusion:SfDataGrid.CaptionSummaryRow>
//Code Behind
public class CustomAggregate : ISummaryAggregate
{
public CustomAggregate()
{
}
public double _Percentage { get; set; }
Action<IEnumerable, string, PropertyInfo> ISummaryAggregate.CalculateAggregateFunc()
{
return (items, property, pd) =>
{
var enumerableItems = items as IEnumerable<OrderInfo>;
if (pd.Name == "_Percentage")
{
// Pass your column name here
this._Percentage = enumerableItems.Percentage<OrderInfo>(q => q.OrderID, q => q.EmployeeID);
}
};
}
}
public static class LinqExtensions
{
public static double Percentage<T>(this IEnumerable<T> values, Func<T, double> _value1, Func<T, double> _value2)
{
double average = 0;
var count = values.Count();
if (count > 0)
{
double value1 = values.Sum(_value1);
double value2 = values.Sum(_value2);
average = ((value1 * 100) / value2) - 100;
return average;
}
return average;
}
}
|
|
<syncfusion:SfDataGrid.Columns >
<syncfusion:GridTextColumn MappingName="FirstName" HeaderText="Name" />
<syncfusion:GridTextColumn HeaderText="Last Month" MappingName="OrderID" />
<syncfusion:GridTextColumn HeaderText="Current Month" MappingName="EmployeeID" />
<syncfusion:GridUnboundColumn HeaderText="Sale %" MappingName="Unbound" Expression="(((EmployeeID*100)/OrderID)-100)"/>
<syncfusion:GridTextColumn HeaderText="Ship Country" MappingName="ShipCountry" />
</syncfusion:SfDataGrid.Columns>
<syncfusion:SfDataGrid.GroupColumnDescriptions>
<syncfusion:GroupColumnDescription ColumnName="FirstName" />
</syncfusion:SfDataGrid.GroupColumnDescriptions>
<syncfusion:SfDataGrid.CaptionSummaryRow>
<syncfusion:GridSummaryRow Title="LM {TotalSalary} CM {ProductCount} and Avg {Sale_Percentage}"
ShowSummaryInRow="True">
<syncfusion:GridSummaryRow.SummaryColumns>
<syncfusion:GridSummaryColumn Name="TotalSalary"
Format="{}{Sum:c}"
MappingName="OrderID"
SummaryType="DoubleAggregate" />
<syncfusion:GridSummaryColumn Name="ProductCount"
Format="{}{Sum:c}"
MappingName="EmployeeID"
SummaryType="DoubleAggregate" />
<syncfusion:GridSummaryColumn Name="Sale_Percentage"
Format="{}{Average:c}"
MappingName="Unbound"
SummaryType="DoubleAggregate" />
</syncfusion:GridSummaryRow.SummaryColumns>
</syncfusion:GridSummaryRow>
</syncfusion:SfDataGrid.CaptionSummaryRow>
|