我的问题在于jQGrid和OData数据源(.NET WCF)
我试图让jQgrid分页正常工作,目前我有基本的数据加载和列排序功能。
我通过覆盖xmlReader
函数来使jQgrid解析OData XML
xmlReader: {
root: "feed",
row: "entry",
id: "entry>id",
total: "m:count"
}
然后在对服务器的请求中,我覆盖serializeGridData
函数以尝试以OData格式发送请求。
serializeGridData: function (obj) {
obj["$inlinecount"] = "allpages";
obj["$orderby"] = obj.sidx + " " + obj.sord;
obj["$skip"] = (obj.page - 1) * obj.rows;
return obj;
}
但问题是OData响应只包含m:count
这是记录的总数。我相信jQGrid至少需要totalrecords
,currentpagenum
和totalPages
才能让分页正常工作。
我错过了什么?
一个侧面问题是Kendo UI Grid如何实现这一点,是否有任何我可以从他们的代码中学习(或解除)?
服务器端分页演示 - http://demos.kendoui.com/web/grid/remote-data.html
演示与oData源进行通信时:http://demos.kendoui.com/service/Northwind.svc/Orders
使用相同的oData格式并获得相同的响应 - 缺少页码。
答案 0 :(得分:2)
如果你愿意...我已经让它为我正在进行的项目工作,我有一个你可以仔细阅读的要点......
答案 1 :(得分:0)
首先,我建议您使用JSON而不是XML与OData WCF服务进行通信。如果您使用ASP.NET 4.X,则需要在WCF服务的端点设置中包含automaticFormatSelectionEnabled="true"
属性。有关详细信息,请参阅the answer。之后,您可以使用jqGrid的datatype: "json"
和ajaxGridOptions: { contentType: "application/json" }
选项。 OData WCF服务将返回JSON数据。
serializeGridData
,jsonReader
和prmNames
的例子the answer。我认为你也可以在你的情况下使用这些选项。