Feb 03, 2020, 5:02 PM
Grid Drag and Drop Save to Database
Hello,
I have posted about this a while ago, but I am using a drag and drop in a GridView to change the order of records I have in a database. The reorder works in the view, however, I am having trouble getting the new ordernumber to save to the database. Here is direct event with listener and the JavaScript:
I have posted about this a while ago, but I am using a drag and drop in a GridView to change the order of records I have in a database. The reorder works in the view, however, I am having trouble getting the new ordernumber to save to the database. Here is direct event with listener and the JavaScript:
var reOrderGrid = function (node, draggedRows, targetRow, dropPosition) {
// Dragged Row = draggedRows.records[0]
// Target Row = targetRow
// dropPosition = "before" or "after"
var newOrderNumber;
switch (dropPosition) {
case 'before':
newOrderNumber = targetRow.data.SortOrder;
break;
case 'after':
newOrderNumber = targetRow.data.SortOrder + 1;
break;
}
App.hdnDragReqPriorityKey.setValue(draggedRows.records[0].data.RequestPriorityKey);
App.hdnOldOrderNumber.setValue(draggedRows.records[0].data.SortOrder);
App.hdnNewOrderNumber.setValue(newOrderNumber);
App.storeReqPriorities.each(function (record, index) {
record.set("SortOrder", index);
});
//App.reqPrioritiesGrid.view.refresh(false);
}
.Listeners(d =>
{
d.Drop.Fn = "reOrderGrid";
})
.DirectEvents(de =>
{
de.Drop.Url = Url.Action("ManageLists_DropData");
de.Drop.ExtraParams.Add(new Parameter { Name = "dragReqPriorityKey", Value = "App.hdnDragReqPriorityKey.getValue()", Mode = Ext.Net.ParameterMode.Raw });
de.Drop.ExtraParams.Add(new Parameter { Name = "newOrderNumber", Value = "App.hdnNewOrderNumber.getValue()", Mode = Ext.Net.ParameterMode.Raw });
de.Drop.ExtraParams.Add(new Parameter { Name = "oldOrderNumber", Value = "App.hdnOldOrderNumber.getValue()", Mode = Ext.Net.ParameterMode.Raw });
de.Drop.Success = "App.storeReqPriorities.reload();";
})
And here is the controller action: public ActionResult ManageLists_DropData(short dragReqPriorityKey, short oldOrderNumber, short newOrderNumber, short sortOrder)
{
var prioritySort = _adminService.UnitOfWork;
using (prioritySort)
{
RequestPriority reqs = _adminService.UpdateSortOrder(sortOrder);
if (reqs != null)
{
reqs.SortOrder = newOrderNumber;
_adminService.UpdateSortOrder(sortOrder);
}
else
{
reqs = new RequestPriority();
reqs.SortOrder = newOrderNumber;
_adminService.AddRequestPriority(reqs);
}
prioritySort.Commit();
}
return this.Direct();
}
Please let me know how to accomplish this!