jquery - jqGrid 删除一行

标签 jquery asp.net jquery-plugins jqgrid

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

这是我的网格设置代码:

$("#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

我做错了什么?

编辑:

我已将以下代码添加到我的 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
});

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

最佳答案

也许您应该在 serializeDelData 内部使用 JSON.stringify (来自 json2.js )。您没有发布需要删除的 Web 方法 DeleteCustomer 的原型(prototype),但您的问题可能可以通过以下代码解决:

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

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

ajaxDelOptions: { contentType: "application/json"} 参数的使用也大多是必需的。

使用 Fiddler 会很有帮助。或Firebug捕获并分析 HTTP 流量。

关于jquery - jqGrid 删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122392/

相关文章:

javascript - Isotope 和 Masonry jQuery 插件之间的区别

javascript - 在显示隐藏元素时,由于滚动,它显示在错误的位置,仅在 chrome 中

javascript - 在具有固定链调用结束的循环中链接 jquery .when().then()

c# - Paypal 在 asp.net 中的集成与 c#

asp.net - 如何计算 sqldatasource 获取的行数

css - 垂直堆叠,中间部分尽可能高

javascript - 未捕获的类型错误未定义不是函数

javascript - 使用选择框编辑表格

Javascript onchange 函数不适用于 PHP

c# - 我的数据库连接应该保持打开状态并在 asp.net 中传递,还是根据需要打开和关闭?