<SfGrid TValue="Order" ID="Grid" AllowSorting="true" AllowFiltering="true" AllowPaging="true" Toolbar="@(new List<string>() { "Add", "Delete", "Update", "Cancel" })">
<SfDataManager AdaptorInstance="@typeof(CustomAdaptor)" Adaptor="Adaptors.CustomAdaptor"></SfDataManager>
<GridEditSettings AllowAdding="true" AllowDeleting="true" AllowEditing="true"></GridEditSettings>
<GridColumns>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" IsIdentity="true" IsPrimaryKey="true" Width="120"></GridColumn>
. . .
</GridColumns>
</SfGrid>
@code {
public SfGrid<Order> GridName { get; set; }
// Implementing custom adaptor by extending the DataAdaptor class
public class CustomAdaptor : DataAdaptor
{
OrderContext db = new OrderContext();
// Performs data Read operation
public override object Read(DataManagerRequest dm, string key = null)
{
IEnumerable<Order> DataSource = db.Orders;
. . .
return dm.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource;
}
// Performs Remove operation
public override object Remove(DataManager dm, object value, string keyField, string key)
{
Order ord = db.Orders.Find(int.Parse(value.ToString()));
db.Orders.Remove(ord);
db.SaveChanges();
return value;
}
// Performs Insert operation
public override object Insert(DataManager dm, object value, string key)
{
db.Orders.Add(value as Order);
db.SaveChanges();
return value;
}
// Performs Update operation
public override object Update(DataManager dm, object value, string keyField, string key)
{
var data = db.Orders.Where(or => or.OrderID == (value as Order).OrderID).FirstOrDefault();
if (data != null)
{
data.OrderID = (value as Order).OrderID;
data.CustomerID = (value as Order).CustomerID;
data.EmployeeID = (value as Order).EmployeeID;
}
return value;
}
}
}
|
// Performs BatchUpdate operation
public override async Task<object> BatchUpdateAsync(DataManager dm, object Changed, object Added, object Deleted, string KeyField, string Key, int? dropIndex)
{
if (Changed != null)
{
foreach (var rec in (IEnumerable<Order>)Changed)
{
db.Entry((Order)rec).State = EntityState.Modified;
db.SaveChangesAsync();
}
}
if (Added != null)
{
foreach (var rec in (IEnumerable<Order>)Added)
{
db.Orders.Add((Order)rec);
db.SaveChangesAsync();
}
}
if (Deleted != null)
{
foreach (var rec in (IEnumerable<Order>)Deleted)
{
db.Orders.Remove(rec);
db.SaveChangesAsync();
}
}
//return Orders;
return Task.Run(() =>
{
return db.Orders;
});
} |