我需要一些关于如何将jqGrid与asmx web服务C#绑定的帮助,我找到了一些关于如何将asmx web服务转换为JSON的主题但是我不清楚
此致
答案 0 :(得分:2)
首先,您应该定义WebMethod
,它将为jqGrid提供数据。如果您计划实施服务器端排序和分页,则webmethod应至少具有以下参数
public JqGridData TestMethod (int page, int rows, string sidx, string sord)
其中JqGridData
类将被定义,例如
public class TableRow {
public int id { get; set; }
public List<string> cell { get; set; }
}
public class JqGridData {
public int total { get; set; }
public int page { get; set; }
public int records { get; set; }
public List<TableRow> rows { get; set; }
}
还有其他不同的选择如何填充网格,但首先要了解至少一种方法。
重要的是,要从Web方法返回JSON数据,您不需要手动将返回的数据转换为JSON 。您只需要使用数据返回对象,ASMX Web服务将根据HTTP请求的标头将对象本身序列化为XML或JSON。
对服务器的请求将在HTTP标头的application/json; charset=utf-8
部分中包含application/json
或Content-Type
,返回的数据将为JSON,并且
{
"d": {
"page": 1,
"total": 4,
"records": 4,
"rows": [
...
]
}
}
在客户端,您应该使用
$("#list").jqGrid({
url: 'MyTestWS.asmx/TestMethod',
datatype: 'json',
mtype: 'POST',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
serializeGridData: function (postData) {
return JSON.stringify(postData);
},
jsonReader: {
root: "d.rows",
page: "d.page",
total: "d.total",
records: "d.records"
}
gridview: true,
...
}
有关代码示例,请参阅here。
更新:Here和here您可以下载Visual Studio演示项目。有关其他演示项目的更多链接,请参阅the answer。