我正在使用asmx服务返回要在jqGrid中显示的数据。我可以看到json数据在完全回调中返回。这就是完整回调中的json数据看起来像{"d":[{"__type":"HHSC.CTF.Business.BatchReceiptModel","BReceiptId"....
。我不确定为什么它前面有d:
以及数据的类型名称。
这是我的jqGrid设置看起来像
$("#list").jqGrid({
url: "../../WebServices/BatchReceiptsWebService.asmx/BatchReceiptsTable",
datatype: "json",
mtype: 'POST',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8',
success: function (data, status) {
},
complete: function (xhr) {
},
error: function (jqXHR, textStatus, errorThrown) {
}
},
serializeGridData: function (postData) {
return JSON.stringify(postData);
},
jsonReader: {
repeatitems: false,
id: "BReceiptId",
page: function (obj) { return 1; },
total: function (obj) { return 1; },
root: function (obj) { return obj; },
records: function (obj) {
return obj.d.length;
}
},
colNames: ['BReceiptId', 'ReceiptNumber', 'ReceiptAmount'],
colModel: [
{ name: 'BReceiptId', index: 'BReceiptIdnId', width: 100 },
{ name: 'ReceiptNumber', index: 'ReceiptNumber', width: 150 },
{ name: 'ReceiptAmount', index: 'ReceiptAmount', align: 'right', width: 100 }
],
rowNum: 10,
loadonce: true,
gridview: true,
rownumbers: true,
rowList: [10, 20, 30],
viewrecords: true
});
答案 0 :(得分:2)
使用success
中的相应属性,您无法覆盖error
的{{1}}和jQuery.ajax
个回调。如果你检查jqGrid的the source code,你会看到jqGrid使用回调。在ajaxGridOptions
内部回调jqGrid处理服务器响应并填充网格,然后隐藏“正在加载...”div。 通过在success
中定义success
和error
回调,您可以使用jqGrid使用的Ajax处理。
答案 1 :(得分:1)
你的jsonReader看起来有点顶了。 ' d'从ASP.NET 3.5开始,字符包装ASMX服务调用的JSON返回。见这里:http://encosia.com/a-breaking-change-between-versions-of-aspnet-ajax/
尝试:
jsonReader: {
repeatitems: false,
root: "d.rows", // or d dot whatever property name you use for the collection of data
page: "d.page", // or d dot whatever property name you use for the current page
total: "d.total", // or d dot whatever property name you use for total pages
records: "d.records", // or d dot whatever property name you use for total record count
id: "BReceiptId",
},
见这里:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data
我返回一个看起来像这样的对象:
public class GridData<T>
{
public int Total { get; set; }
public int Page { get; set; }
public int Records { get; set; }
public List<T> Rows { get; set; }
public object UserData { get; set; }
}
所以我的jsonReader如下(注意区分大小写):
jsonReader: {
repeatitems: false,
root: "d.Rows",
page: "d.Page",
total: "d.Total",
records: "d.Records",
userdata: "d.UserData",
id: "Id"
},