|
[Index.razor]
@using Syncfusion.Blazor.Grids
@inject IJSRuntime JSRuntime
<SfGrid @ref="Grid" ID="Grid" DataSource="@Orders" AllowResizing="true" AllowPaging="true">
<GridEvents DataBound="DataBoundHandler" TValue="Order"></GridEvents>
<GridPageSettings PageSize="8"></GridPageSettings>
<GridAggregates>
<GridAggregate>
<GridAggregateColumns>
<FooterTemplate>
@{
var aggregate = (context as AggregateTemplateContext);
<div>
<p>Sum: @aggregate.Sum</p>
</div>
}
</FooterTemplate>
</GridAggregateColumn>
</GridAggregateColumns>
</GridAggregate>
</GridAggregates>
<GridColumns>
. . .
</GridColumns>
</SfGrid>
@code{
SfGrid<Order> Grid;
. . .
public async Task DataBoundHandler()
{
await JSRuntime.InvokeVoidAsync("Changeposition", Grid.ID); // called interop function
}
} |
|
[Interop.js]
function Changeposition(id) {
console.log('hi');
var grid = document.getElementById(id);
//var aggregateEle = grid.querySelector(".e-gridfooter").cloneNode(true);
var aggregateEle = grid.querySelector(".e-gridfooter"); //get original aggregate element insert before grid content
grid.insertBefore(aggregateEle, grid.querySelector(".e-gridcontent"));
}
|
|
@using Syncfusion.Blazor.Grids
@inject IJSRuntime JSRuntime
<SfGrid @ref="Grid" ID="Grid" DataSource="@Orders" AllowResizing="true" AllowPaging="true">
<GridEvents DataBound="DataBoundHandler" ResizeStopped="ResizeStoppedHanlder" TValue="Order"></GridEvents>
<GridPageSettings PageSize="8"></GridPageSettings>
<GridAggregates>
<GridAggregate>
<GridAggregateColumns>
<FooterTemplate>
@{
var aggregate = (context as AggregateTemplateContext);
<div>
<p>Sum: @aggregate.Sum</p>
</div>
}
</FooterTemplate>
</GridAggregateColumn>
</GridAggregateColumns>
</GridAggregate>
</GridAggregates>
<GridColumns>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" TextAlign="TextAlign.Right" Width="120"></GridColumn>
. .
</GridColumns>
</SfGrid>
@code{
SfGrid<Order> Grid;
. ..
public async Task DataBoundHandler()
{
await JSRuntime.InvokeVoidAsync("Changeposition", Grid.ID); // called interop function for adding the row initially
}
public async Task ResizeStoppedHanlder(ResizeArgs args)
{
await JSRuntime.InvokeVoidAsync("Replace", Grid.ID); // called interop function
}
} |
|
[Interop.js]
function Changeposition(id) {
console.log('hi');
var width;
var grid = document.getElementById(id);
var aggregateElement = document.getElementById(id + "_footer_table").cloneNode(true);
grid.insertBefore(aggregateElement, grid.querySelector(".e-gridcontent"));
}
function Replace() {
var alltable = document.getElementsByClassName('e-table');
var cl = alltable[3].cloneNode(true); //cloned original aggregate row after completing the resize
alltable[1].replaceWith(cl); //replaced with top aggregate row
}
|