如何使用 asp.net mvc 删除 jqgrid 中的多个寄存器?

How to delete multiples registers in jqgrid using asp.net mvc?

你能帮我删除在我的 jqgrid 中选择的多条记录吗?我尝试了多种方法,但到目前为止没有取得任何成功。我将感谢任何能帮助我的人。

jQuery("#grid-table").jqGrid({
        //direction: "rtl",
        url: "/Lojas/GetLojas",
        datatype: 'json',

        mtype: 'Get',
        height: '100%',
        colNames: [ ' ',
                    'Name',
                    'Description'
                  ],
        colModel: [
            {
                name: 'myac', index: '', width: 65, fixed: true, sortable: false, resize: false,
                formatter: 'actions',
                formatoptions: {
                    keys: true,
                    delOptions: { recreateForm: true, url: '/Lojas/Delete', beforeShowForm: beforeDeleteCallback },
                    editformbutton: true, editOptions: { recreateForm: true, url: '/Lojas/Edit', closeAfterEdit: true, beforeShowForm: beforeEditCallback, closeOnEscape: true }
                }
            },
            { key: true, hidden: true, name: 'Id', index: 'Id', sorttype: "int", editable: false },
            { key: false, name: 'Name', index: 'Name', editable: true},
            { key: false, name: 'Description', index: 'Description', editable: true}
        ],

        viewrecords: true,
        loadonce: true,
        rowNum: 10,
        rowList: [5, 10, 15],
        jsonReader: {
            root: "rows",
            page: "page",
            total: "total",
            records: "records",
            repeatitems: false,
            Id: "0"
        },
        pager: pager_selector,
        altRows: true,
        autowidth: true,
        multiselect: true,
        multiboxonly: true,
        sortorder: "desc",
        multiboxonly: true,
        caption: "Lojas Cadastradas"
    });

      //navButtons
    jQuery("#grid-table").jqGrid('navGrid', pager_selector,
        {   
            edit: true,
            add: true,
            del: true,
            search: true,
            refresh: true,
            view: true,
        },
        {
            url: '/Lojas/Edit',
            closeOnEscape: true,
            closeAfterEdit: true,
            recreateForm: true
        },
        {
            url: '/Lojas/Create',
            closeOnEscape: true,
            closeAfterAdd: true,
            recreateForm: true
        },
        {
            url: '/Lojas/Delete',
            closeOnEscape: true,
            closeAfterDelete: true,
            recreateForm: true
        },
        {
            //search form
            recreateForm: true,
            closeOnEscape: true,
            closeAfterSearch: true,
            multipleSearch: true
        },
        {
            //view record form
            recreateForm: true
        }
    )

我控制器中的代码:

public ActionResult Delete(Loja loja)
    {
        Loja lojaToDelete = db.Lojas.Find(loja.Id);
        if (lojaToDelete == null)
        {
            return HttpNotFound();
        }
        db.Lojas.Remove(lojaToDelete);
        db.SaveChanges();
        return View(loja);
    }

我建议您将 Delete 函数的原型 public ActionResult Delete(Loja loja) 更改为

public void Delete(string id)

您的代码中的主要问题如下。对应于the documentation jqGrid post id 参数到url: '/Lojas/Delete'。您可以使用 prmNames 重命名 id 参数的名称。在这种情况下,您可以使用 prmNames: {id: "Id"},但这并不是必需的。

如果需要删除多行,则 id 字符串将以逗号分隔,您可以使用

public void Delete(string id)
{
    var ids = id.Split(',');
    foreach (lojaId in ids) {
        Loja lojaToDelete = db.Lojas.Find(lojaId);
        if (lojaToDelete == null)
            throw new HttpResponseException(HttpStatusCode.NotFound);
        db.Lojas.Remove(lojaToDelete);
    }
    db.SaveChanges();
}