jqGrid 删除一行

2023-12-10

我已经创建了网格,并想使用网格的默认行为来删除一行。

这是我的网格设置代码:

$("#grid").jqGrid('navGrid', '#grid_pager',
    { add: true, addtitle: 'Add Customer', 
      edit: true, edittitle: 'Edit Customer',
      del: true, deltitle: 'Delete Customer', 
      refresh: true, refreshtitle: 'Refresh data',
      search: true, searchtitle: 'Advanced search filters', 
      addfunc: addReferent, editfunc: editReferent
    },
    {}, // default settings for edit
    {}, // default settings for add
    { // define settings for Delete 
        mtype: "post", 
        reloadAfterSubmit: true,
        url: wsBaseUrl + 'CustomerService.asmx/DeleteCustomer',
        resize: false,
        serializeDelData: function(postdata) {
            return JSON.stringify({ customerID: postdata.id });
        }
    },
    { // define settings for search
        closeOnEscape: true, multipleSearch: true, closeAfterSearch: true 
    }, 
    {}
);

这是服务器上定义的 Web 服务方法

[WebMethod]
public OperationResult Deletecustomer(string customerID)
{
}

但不幸的是,当我单击“删除”按钮并在确认窗口上单击“确定”时,我收到一条错误消息,显示 404。如下图所示

Error screenshot

我究竟做错了什么?

EDIT:

我已将以下代码添加到 jqGrid 初始化中

// Set defaults value for jqGrid
$.jgrid.defaults = $.extend($.jgrid.defaults, {
    mtype: 'post',
    datatype: 'json',
    jsonReader: {
        root: "d.Rows",
        page: "d.Page",
        total: "d.Total",
        records: "d.Records",
        repeatitems: false,
        userdata: "d.UserData",
        id: "Id"
    },
    ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
    serializeGridData: function (postData) {
        return JSON.stringify(postData);
    },
    ajaxDelOptions: { contentType: 'application/json; charset=utf-8' },
    serializeDelData: function (postData) {
        return JSON.stringify(postData);
    },
    loadui: "block",
    multiboxonly: true,
    rowNum: 25,
    rowList: [25, 50, 100],
    altRows: true,
    altclass: 'ui-priority-secondary',
    autoencode: true,
    autowidth: true,
    rownumbers: true,
    rownumWidth: 30,
    gridview: true,
    hoverrows: true,
    viewrecords: true
});

但我仍然遇到同样的错误...


也许你应该只使用JSON.stringify (from json2.js) 代替serializeDelData。您没有发布网络方法的原型DeleteCustomer您需要删除它,但您的问题可能可以通过以下代码解决:

serializeDelData: function(postdata) {
    return JSON.stringify({customerID: postdata.id});
}

使用 ASMX 服务时更常见的问题。可能需要定义所调用的 Web 方法的所有参数(请参阅here一个例子)。

的用法ajaxDelOptions: { contentType: "application/json" }大多数情况下也需要参数。

使用起来会有帮助Fiddler or Firebug捕获并分析 HTTP 流量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jqGrid 删除一行 的相关文章