【问题标题】:Jqgrid pagination with Restful web services使用 Restful Web 服务进行 Jqgrid 分页
【发布时间】:2014-11-06 06:25:38
【问题描述】:

我有以下要求; 我有一个 jqgrid,它使用 webservice(RESTful webservices)调用加载 json 数据。当表单加载时,我点击服务器并将数据加载到网格。如果我有 50 行,网格只加载 50 行。但我使用了分页,因此它将仅显示 10 条记录,然后单击分页中的下一步按钮,将显示其他 10 条记录。但我的要求是关于表单加载,我应该点击服务器并限制仅显示 10 条记录。然后我再次单击下一步,我调用 webservice 调用并显示接下来的 10 行。可以吗?如果可以,可以分享任何示例吗?

【问题讨论】:

    标签: java rest jqgrid


    【解决方案1】:

    经典的 RESTful Web 服务不支持分页。所以必须从服务器返回所有数据并使用客户端分页。如果您只有 50 行数据,我建议您使用客户端分页。您只需要在 jqGrid 中包含 loadonce: true 选项,所有这些都应该已经工作了。一般来说,如果从服务器加载的数据不多,建议使用loadonce: true 选项。不存在首选客户端分页的行的确切限制。大约有 1000 或 10000 行数据。因此,如果是 50 行数据,则非常推荐。

    如果您确实需要实现 RESTful 服务的服务器端分页(如果数据集非常大),那么您的服务必须支持与资源 URL 无关的请求的附加参数。例如,开放数据协议 (OData) URI 支持从 2.0 版开始(参见 here 例如)参数 $orderby$skip$top$inlinecount 可以附加到 URL 以通知服务器返回按$orderby排序的数据。返回的数据应该只包含一页根据$skip$top 参数的值排序的数据。 URL 看起来像

    http://host:port/path/SampleService.svc/Categories(1)/Products?$top=2&$orderby=Name
    \______________________________________/\____________________/ \__________________/
                          |                               |                       |
                  service root URL                  resource path           query options
    

    The old answer 提供了调用开放数据协议 (OData) Web 服务的 jqGrid 实现示例。我使用serializeGridData 回调填充$top$skip$orderby$inlinecount,它们“理解”OData Web 服务。由于请求中使用了$inlinecount: "allpages",我根据从服务器返回的count 属性使用beforeProcessing 回调到total 属性。如果您使用的 RESTful Web 服务也支持 OData,那么您可以使用相同的代码。

    【讨论】:

    • 感谢 Oleg 的回复...我用 Jqgrid Pager 打动了。举例来说,对服务器的请求仅返回 grid.i 中 20 行中的前 10 行数据。我在 jqgrid 中给定 rownum 为 10 .所以那个时候我无法点击下一个按钮来检索下 10 条记录。是否可以在 jqgrid 寻呼机中启用下一个按钮?
    • @vik:不客气!我想,从服务器返回的数据格式错误。如果您需要在服务器端实现分页,则响应必须包含total 属性(请参阅the documentation),它通知 jqGrid 相同大小的页面总数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多