3

您能否帮我删除在我的 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);
    }
4

1 回答 1

2

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

public void Delete(string id)

您的代码中的主要问题如下。对应于文档jqGrid 的 postid参数到url: '/Lojas/Delete'. 您可以使用 重命名id参数的名称prmNames。在这种情况下,您可以使用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();
}
于 2015-03-13T14:26:22.373 回答