2014-11-06 5 views
0

У меня есть требование ниже; У меня есть jqgrid, который загружает json-данные, используя вызов webservice (RESTful webservices). При загрузке формы я нажимаю на сервер и загружаю данные в grid.If у меня есть 50 строк, сетка загружает только 50 строк. Но я использовал разбиение на страницы, поэтому он отображает только 10 записей и нажимает на следующую кнопку в разбивке на страницы. Будет отображаться еще 10 записей. Но мое требование находится на formload. Я должен ударить по серверу и ограничить отображение всего 10 записей. Затем я нажимаю Next, и я вызываю вызов webservice и отобразить следующие 10 строк. Возможно ли это? Если да, можете поделиться любыми образцами?Jqgrid разбиение на страницы с помощью Restful web services

ответ

0

Классические веб-службы RESTful не поддерживают разбиение на страницы. Поэтому нужно вернуть все данные с сервера и использовать клиентскую сторону pagination. Если у вас есть только 50 строк данных, я бы рекомендовал вам использовать разбивку на страницы клиента. Вам нужно просто включить loadonce: true в jqGrid, и все должно работать. В общем случае рекомендуется использовать опцию loadonce: true, если вы загружаете не так много данных с сервера. Не существует точного предела строк, где предпочтительна разбивка страницы на стороне клиента. Это около 1000 или 10000 строк данных. Поэтому в случае 50 строк данных это действительно строго рекомендуется.

Если вам действительно нужно реализовать на сторону сервера пагинацию успокоительных услуг (в случае очень больших наборов данных), то ваш сервис должен поддерживать дополнительные параметры запроса, который будет не иметь никакого отношения к ресурсной URL. Для примера Open Data Protocol (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 приведен пример реализации jqGrid, который вызывает Open Data Protocol (OData) веб-службы. Я использовал serializeGridData callback для заполнения $top, $skip, $orderby и $inlinecount который «понимает» веб-сервис OData. Я использовал beforeProcessing callback to total недвижимость на основе count свойство, возвращенное с сервера из-за использования $inlinecount: "allpages" в запросе. Если веб-службы RESTful, которые вы используете, также поддерживают OData, вы можете использовать один и тот же код.

+0

Спасибо за ответ Олег ... Я поразил Jqgrid Pager.Say для примера. Запрос на сервер возвращает только первые 10 строк данных из 20 в grid.i, учитывая, что rownum равен 10 в jqgrid.so, что время i я не могу нажать следующую кнопку, чтобы получить следующие 10 записей. Можно ли включить следующую кнопку в плеере jqgrid? – vik

+0

@vik: Добро пожаловать! Я предположил, что данные, возвращенные с сервера, были в неправильном формате. Если вам нужна реализация подкачки на стороне сервера, ответ должен содержать свойство 'total' (см. [Документация] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data)) который сообщает jqGrid об общем количестве страниц того же размера. – Oleg

Смежные вопросы