jqGrid删除一行

时间:2011-05-25 09:41:55

标签: 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 Initialization

// 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
});

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

1 个答案:

答案 0 :(得分:4)

您可能只需在JSON.stringify内使用serializeDelData(来自json2.js)。您没有发布需要删除的网络方法DeleteCustomer的原型,但可能使用以下代码修复您的问题:

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

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

主要还需要使用ajaxDelOptions: { contentType: "application/json" }参数。

使用FiddlerFirebug来捕获和分析HTTP流量会很有帮助。