2014-11-06 42 views
0

我有一个要求下面; 我有一个jqgrid使用webservice(RESTful webservices)调用加载json数据。当表单加载时,我打开服务器并将数据加载到grid.If我有50行,网格只加载50行only.but我用分页,所以它只会显示10条记录,并点击下一个按钮分页显示其他10条记录。但我的要求是在formload我应该打服务器和限制只显示10条记录。然后我再次点击下一步我打电话给web服务调用并显示下10行。是否有可能?如果是,可以共享任何样本?Jqgrid分页与Restful Web服务

回答

0

古典REST风格的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回调来填充“了解”OData Web服务的$top,$skip,$orderby$inlinecount。我使用beforeProcessing回调到total属性基于count属性返回从服务器因为请求中使用$inlinecount: "allpages"。如果您使用的RESTful Web服务也支持OData,那么您可以使用相同的代码。

+0

感谢您的回复Oleg ...我与Jqgrid Pager.Shell相比,例如,对服务器的请求只返回grid.i中20个数据中前10行的数据,因为在jqgrid.so中rownum为10我无法点击下一个按钮来检索下10条记录。是否可以启用jqgrid pager中的下一个按钮? – vik 2014-11-07 13:49:40

+0

@vik:不客气!我猜想,从服务器返回的数据格式不正确。如果您需要在服务器端实现分页,则响应必须包含'total'属性(请参阅[文档](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data))通知jqGrid有关相同大小的页面总数。 – Oleg 2014-11-07 14:01:22