|
index.js
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function () {
var grid = new ej.grids.Grid({
editSettings: { allowEditing: true, allowAdding: true, allowDeleting: true, mode: 'Batch' },
allowPaging: true,
pageSettings: { pageCount: 5 },
allowRowDragAndDrop: true,
rowDrop: function (args) {
var grid = document.getElementsByClassName('e-grid')[0].ej2_instances[0];
args.cancel = true;
let ajax = new ej.base.Ajax();
ajax.type = "POST"
ajax.url = "Home/Move"
let moveposition = { oldIndex: args.fromIndex, data: args.data, newIndex: args.dropIndex };
ajax.data = JSON.stringify(moveposition);
ajax.send();
ajax.onSuccess = () => {
grid.refresh(); // refresh the grid
}
},
toolbar: ['Add', 'Edit', 'Delete', 'Update', 'Cancel'],
load: function () {
let data = new ej.data.DataManager({ url: "/Home/UrlDatasource", batchUrl: "/Home/BatchUpdate", adaptor: new ej.data.UrlAdaptor });
grid.dataSource = data;
},
allowPaging: true,
columns: [
{ field: 'OrderID', headerText: 'Order ID', textAlign: 'Right', width: 120, isPrimaryKey: true },
{
field: 'EmployeeID', width: 140, headerText: 'Employee ID'
},
{ field: 'ShipCity', headerText: 'Ship Country', width: 140 }
]
});
grid.appendTo('#Grid');
});
</script> |
|
public void move(values data)
{
// swap the data in the dataSource.
} |
|
index.js
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function () {
var grid = new ej.grids.Grid({
editSettings: { allowEditing: true, allowAdding: true, allowDeleting: true, mode: 'Batch' },
allowPaging: true,
pageSettings: { pageCount: 5 },
beforeBatchSave: function (args) {
grid.query = new ej.data.Query().addParams("ej2Grid", "true");
},
toolbar: ['Add', 'Edit', 'Delete', 'Update', 'Cancel'],
load: function () {
let data = new ej.data.DataManager({ url: "/Home/UrlDatasource", batchUrl: "/Home/BatchUpdate", adaptor: new ej.data.UrlAdaptor });
grid.dataSource = data;
},
allowPaging: true,
columns: [
{ field: 'OrderID', headerText: 'Order ID', textAlign: 'Right', width: 120, isPrimaryKey: true },
{
field: 'EmployeeID', width: 140, headerText: 'Employee ID'
},
{ field: 'ShipCity', headerText: 'Ship Country', width: 140 }
]
});
grid.appendTo('#Grid');
});
</script> |
|
HomeController.cs
public IActionResult BatchUpdate([FromBody]CRUDModel batchmodel)
{
if (batchmodel.Changed != null)
{
for (var i = 0; i < batchmodel.Changed.Count(); i++)
{
var ord = batchmodel.Changed[i];
Orders val = order.Where(or => or.OrderID == ord.OrderID).FirstOrDefault();
val.OrderID = ord.OrderID;
val.EmployeeID = ord.EmployeeID;
val.CustomerID = ord.CustomerID;
val.ShipCity = ord.ShipCity;
}
}
if (batchmodel.Deleted != null)
{
for (var i = 0; i < batchmodel.Deleted.Count(); i++)
{
order.Remove(order.Where(or => or.OrderID == batchmodel.Deleted[i].OrderID).FirstOrDefault());
}
}
if (batchmodel.Added != null)
{
for (var i = 0; i < batchmodel.Added.Count(); i++)
{
order.Insert(0, batchmodel.Added[i]);
}
}
var data = order.ToList();
return Json(data);
} |