@using Syncfusion.Blazor.Data
@using Syncfusion.Blazor.Grids
<button @onclick="Calculate">Get aggregate</button>
<SfGrid @ref="Grid" DataSource="@Orders" AllowPaging="true" Toolbar="@(new List<string>() { "Add", "Delete", "Update", "Cancel" })">
<GridPageSettings PageSize="8"></GridPageSettings>
<GridEditSettings AllowAdding="true" AllowEditing="true" AllowDeleting="true" Mode="EditMode.Batch"></GridEditSettings>
<GridAggregates>
<GridAggregate>
<GridAggregateColumns>
<FooterTemplate>
@{
var aggregate = (context as AggregateTemplateContext);
<div>
<p>Sum: @aggregate.Sum</p>
</div>
}
</FooterTemplate>
</GridAggregateColumn>
</GridAggregateColumns>
</GridAggregate>
<GridAggregate>
<GridAggregateColumns>
<FooterTemplate>
@{
var aggregate = (context as AggregateTemplateContext);
<div>
<p>Average: @aggregate.Average</p>
</div>
}
</FooterTemplate>
</GridAggregateColumn>
</GridAggregateColumns>
</GridAggregate>
</GridAggregates>
<GridColumns>
. . .
<GridColumn Field=@nameof(Order.Freight) HeaderText="Freight" Format="C2" TextAlign="TextAlign.Right" Width="120"></GridColumn>
</GridColumns>
</SfGrid>
@code{
SfGrid<Order> Grid { get; set;}
public List<Order> Orders { get; set; }
public List<Syncfusion.Blazor.Data.Aggregate> aggregates = new List<Syncfusion.Blazor.Data.Aggregate>();
protected override void OnInitialized()
{
Orders = Enumerable.Range(1, 75).Select(x => new Order()
{
. . .
aggregates.Add(new Aggregate() { Field = "Freight", Type = "Sum" });
aggregates.Add(new Aggregate() { Field = "Freight", Type = "Average" }); //define list of aggregate
}
. . .
public void Calculate()
{
var aggregateValue = DataUtil.PerformAggregation(Orders, aggregates); //calculate aggregate value using PerformAggregation method
}
} |
|