@using RadzenBlazorDemos.Data
@using RadzenBlazorDemos.Models.Northwind
@using Microsoft.EntityFrameworkCore
@inherits DbContextPage
Edit Mode:
@order.Employee?.FirstName @order.Employee?.LastName
@context.FirstName @context.LastName
@String.Format("{0:d}", order.OrderDate)
@String.Format(new System.Globalization.CultureInfo("en-US"), "{0:C}", order.Freight)
@code {
RadzenDataGrid ordersGrid;
IEnumerable orders;
IEnumerable customers;
IEnumerable employees;
DataGridEditMode editMode = DataGridEditMode.Single;
List ordersToInsert = new List();
List ordersToUpdate = new List();
void Reset()
{
ordersToInsert.Clear();
ordersToUpdate.Clear();
}
void Reset(Order order)
{
ordersToInsert.Remove(order);
ordersToUpdate.Remove(order);
}
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
customers = dbContext.Customers;
employees = dbContext.Employees;
orders = dbContext.Orders.Include("Customer").Include("Employee");
}
async Task EditRow(Order order)
{
if (editMode == DataGridEditMode.Single && ordersToInsert.Count() > 0)
{
Reset();
}
ordersToUpdate.Add(order);
await ordersGrid.EditRow(order);
}
void OnUpdateRow(Order order)
{
Reset(order);
dbContext.Update(order);
dbContext.SaveChanges();
}
async Task SaveRow(Order order)
{
await ordersGrid.UpdateRow(order);
}
void CancelEdit(Order order)
{
Reset(order);
ordersGrid.CancelEditRow(order);
var orderEntry = dbContext.Entry(order);
if (orderEntry.State == EntityState.Modified)
{
orderEntry.CurrentValues.SetValues(orderEntry.OriginalValues);
orderEntry.State = EntityState.Unchanged;
}
}
async Task DeleteRow(Order order)
{
Reset(order);
if (orders.Contains(order))
{
dbContext.Remove(order);
dbContext.SaveChanges();
await ordersGrid.Reload();
}
else
{
ordersGrid.CancelEditRow(order);
await ordersGrid.Reload();
}
}
async Task InsertRow()
{
if (editMode == DataGridEditMode.Single)
{
Reset();
}
var order = new Order();
ordersToInsert.Add(order);
await ordersGrid.InsertRow(order);
}
void OnCreateRow(Order order)
{
dbContext.Add(order);
dbContext.SaveChanges();
ordersToInsert.Remove(order);
}
}