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:

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!