Удаление нескольких записей в ASP.NET MVC с помощью jqGrid - PullRequest
3 голосов
/ 17 ноября 2009

Как включить множественный выбор в jqGrid, а также разрешить пользователям удалять все выбранные строки с помощью контроллера ASP.NET MVC?
Я установил свойство delete url для моего / Controller / Delete метода, и это прекрасно работает, если выбрана одна запись. Однако, если выбрано несколько записей, он пытается отправить нулевое значение обратно в контроллер, где требуется целочисленный идентификатор.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2009

Можно, но для этого нужно написать код:

deleteSelected: function(grid) {
    if (!grid.jqGrid) {
        if (console) {
            console.error("'grid' argument must be a jqGrid");
        }
        return;
    }
    var ids = grid.getGridParam('selarrrow');
    var count = ids.length;
    if (count == 0) return;
    if (confirm("Delete these " + count + " records?")) {
        $.post("DeleteMultiple",
            { ids: ids },
            function() { grid.trigger("reloadGrid") },
            "json");
    }
}

    [HttpPost]
    public ActionResult DeleteMultiple(IEnumerable<Guid> ids)
    {
        if (!Request.IsAjaxRequest())
        {
            // we only support this via AJAX for now.
            throw new InvalidOperationException();
        }
        if (!ids.Any())
        {
            // JsonError is an internal class which works with our Ajax error handling
            return JsonError(null, "Cannot delete, because no records selected.");
        }
        var trans = Repository.StartTransaction();
        foreach (var id in ids)
        {
            Repository.Delete(id);
        }
        trans.Commit();
        return Json(true);
    }
0 голосов
/ 08 июня 2010

Я хочу обновить это для MVC2 и jquery 1.4.2, если вы хотите передать параметры массива в mvc2:


var ids = $("#grid").getGridParam('selarrrow');
var postData = { values: ids };
if (confirm("Delete these " + count + " records?")) {
                $.ajax({
                    type: "POST",
                    traditional: true,
                    url: "GridDBDemoDataDeleteMultiple",
                    data: postData,
                    dataType: "json",
                    success: function() { $("#grid").trigger("reloadGrid") }
                });
            }

проверка http://jquery14.com/day-01/jquery-14 часть AJAX ТНХ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...