1

我的问题在于 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,currentpagenumtotalPages才能使分页正常工作。

我错过了什么?

一个附带的问题是 Kendo UI Grid 是如何做到这一点的,我可以从他们的代码中学到(或提升)什么吗?

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

演示与 oData 源通信的位置:http ://demos.kendoui.c​​om/service/Northwind.svc/Orders

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

4

2 回答 2

2

如果您愿意...我已经为我正在进行的项目工作了,我有一个要点供您仔细阅读...

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

于 2013-09-25T02:25:25.063 回答
1

首先,我建议您使用 JSON 而不是 XML 来与 OData WCF 服务进行通信。如果您使用 ASP.NET 4.X,那么您只需automaticFormatSelectionEnabled="true"在 WCF 服务端点的设置中包含属性。有关更多详细信息,请参阅答案。之后,您可以使用jqGrid 的datatype: "json"ajaxGridOptions: { contentType: "application/json" }选项。OData WCF 服务将返回 JSON 数据。

的例子serializeGridData,你就会得到答案。我认为您也可以在您的情况下使用这些选项。jsonReaderprmNames

于 2013-06-07T07:27:54.307 回答