|
<SfGrid DataSource="@Orders" Toolbar="@(new List<string>() { "Add", "Delete", "Update", "Cancel" })">
<GridEvents OnBatchSave="BatchSaveHandler" TValue="Order"></GridEvents>
<GridEditSettings AllowAdding="true" AllowDeleting="true" AllowEditing="true" Mode="EditMode.Batch"></GridEditSettings>
<GridColumns>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" IsPrimaryKey="true" 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{
public List<Order> Orders { get; set; }
public void BatchSaveHandler(BeforeBatchSaveArgs<Order> args)
{
var ChangedRecords = args.BatchChanges.ChangedRecords;
var InsertedRecords = args.BatchChanges.AddedRecords;
var DeletedRecords = args.BatchChanges.DeletedRecords;
// Here you can customize your code
} |
|
@page "/"
@inject OrderService OrderData;
@using APIService.Data
@using Syncfusion.Blazor.Grids
<SfGrid @ref="Grid" TValue="Order" DataSource="@Orders" AllowFiltering="true" Toolbar="@(new List<string> { "Add", "Edit", "Delete", "Update", "Cancel", "Search" })" AllowSorting="true" AllowPaging="true">
<GridEvents OnBatchSave="OnSave" TValue="Order"></GridEvents>
. . . . . .
</SfGrid>
@code{
public List<Order> Orders { get; set; }
SfGrid<Order> Grid { get; set; }
protected override async Task OnInitializedAsync()
{
Orders = await OrderData.GetPeople();
}
public async Task OnSave(BeforeBatchSaveArgs<Order> Args)
{
await OrderData.UpdateBatchChanges(Args.BatchChanges);
Grid.Refresh();
}
[OrderService.cs]
public async Task<HttpResponseMessage> UpdateBatchChanges(BatchChanges<Order> value)
{
//value.OrderID = random.Next();
return await _httpClient.PostAsync($"{baseUrl}api/Default", getStringContentFromObject(value));
}
private StringContent getStringContentFromObject(object obj)
{
var serialized = JsonConvert.SerializeObject(obj);
var stringContent = new StringContent(serialized, Encoding.UTF8, "application/json");
return stringContent;
}
[DefaultController.cs]
// POST: api/Default1
[HttpPost]
public object Post([FromBody] BatchChanges<Order> value)
{
//update your changes here
foreach (var changed in value.ChangedRecords)
{
db.UpdateOrder(changed);
}
foreach (var changed in value.AddedRecords)
{
db.AddOrder(changed);
}
foreach (var changed in value.DeletedRecords)
{
db.DeleteOrder(changed.OrderID);
}
return value;
}
}
|