jQGrid分页和OData

时间:2013-06-07 03:14:54

标签: jqgrid odata

我的问题在于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至少需要totalrecordscurrentpagenumtotalPages才能让分页正常工作。

我错过了什么?

一个侧面问题是Kendo UI Grid如何实现这一点,是否有任何我可以从他们的代码中学习(或解除)?

服务器端分页演示 - http://demos.kendoui.com/web/grid/remote-data.html

演示与oData源进行通信时:http://demos.kendoui.com/service/Northwind.svc/Orders

使用相同的oData格式并获得相同的响应 - 缺少页码。

2 个答案:

答案 0 :(得分:2)

如果你愿意...我已经让它为我正在进行的项目工作,我有一个你可以仔细阅读的要点......

https://gist.github.com/dealproc/6678280

答案 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数据。

serializeGridDatajsonReaderprmNames的例子the answer。我认为你也可以在你的情况下使用这些选项。