|
@using Syncfusion.Blazor.Grids
@using Syncfusion.Blazor.SplitButtons
<SfGrid @ref="Grid" DataSource="@Orders" AllowSelection="true" AllowPaging="true">
<GridEvents OnActionComplete="Complete" TValue="Order"></GridEvents>
<GridSelectionSettings Type="SelectionType.Multiple"></GridSelectionSettings>
<GridColumns>
<GridColumn Type="ColumnType.CheckBox" Width="50">
<HeaderTemplate>
<SfDropDownButton>
<DropDownButtonEvents ItemSelected="OnSelected"></DropDownButtonEvents>
<DropDownMenuItems>
<DropDownMenuItem Text="Select Visible"></DropDownMenuItem>
<DropDownMenuItem Text="Select All"></DropDownMenuItem>
</DropDownMenuItems>
</SfDropDownButton>
</HeaderTemplate>
</GridColumn>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" TextAlign="TextAlign.Right" Width="120"></GridColumn>
<GridColumn Field=@nameof(Order.OrderDate) HeaderText=" Order Date" Format="d" Type="ColumnType.Date" TextAlign="TextAlign.Right" Width="130"></GridColumn>
<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 bool IsSelectAll { get; set; }
public async Task OnSelected(MenuEventArgs Args)
{
if (Args.Item.Text == "Select Visible")
{
IsSelectAll = false;
var CurrentViewRecords = await Grid.GetCurrentViewRecords();
await Grid.SelectRowsByRange(0, CurrentViewRecords?.Count - 1);
}
else if (Args.Item.Text == "Select All")
{
IsSelectAll = true;
await Grid.SelectRowsByRange(0, Orders?.Count - 1);
}
}
public async Task Complete(ActionEventArgs<Order> Args)
{
//to select the next set of records when select all option is choosed
if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Paging && IsSelectAll)
{
var CurrentViewRecords = await Grid.GetCurrentViewRecords();
await Grid.SelectRowsByRange(0, CurrentViewRecords?.Count - 1);
}
}
|