我已经创建了网格,并希望使用网格的默认行为来删除一行。
这是我的网格设置代码:
$("#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。如下图所示
我做错了什么?
编辑:
我已将以下代码添加到我的 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"}
参数的使用也大多是必需的。
关于jquery - jqGrid 删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122392/