2011-02-03 4 views
1

Есть ли простой способ сделать двойной пейджинг (т. Е. Клиент и сервер)?jqGrid двойной пейджинг (как на стороне клиента, так и на стороне сервера)

Прямо сейчас я использую пейджинг на стороне клиента (loadonce = true, который работает очень быстро btw!), Используя фиксированную строку rowTotal (с rowTotal> rowNum). Проблема заключается в том, что rowTotal < Total-Records-in-DB, поэтому я показываю только первые записи серии Total из базы данных и просматривая ее на стороне клиента. Загрузка всех записей из БД не является вариантом (именно поэтому вы используете пейджинговую сетку, p).

С другой стороны, выполнение подкачки на стороне сервера дает низкую производительность (именно поэтому вы используете компонент AJAX; p). Поэтому я думал, что комбинированный подход достигнет лучшего из обоих миров.

В идеале это будет выполняться автоматически. Это: пейджер должен отображать первые rowTotal/rowNum результаты в качестве первой из N страниц, загруженных в память (на стороне клиента). При переходе на страницу N + 1 он должен попасть в бэкэнд и получить следующий результат rowTotal. Проблема, которую я вижу прямо сейчас (я думаю), заключается в том, что количество страниц вычисляется на основе размера набора результатов, деленного на rowNum, вместо записей в базе данных, плюс большинство свойств пейджера неизменяемы :(

это сделать какой-либо смысл? есть ли простой способ сделать это без взлома кода jqGrid в?

с наилучшими пожеланиями!

ответ

3

Вы не первый человек, который имеет требования, см this question, например. поведение, которое вам у вас есть другие недостатки: например, вы не сможете использовать сортировку данных. Например, если пользователь нажимает на заголовок столбца, только l ocal данные будут отсортированы, что было бы неправильно.

В моем опыте серверная страница подкачки на AJAX работает очень быстро. Все зависит от реализации на стороне сервера, но в случае оптимальной реализации на стороне сервера результаты соответствующего запроса кэшируются, а следующая/предыдущая страница будет получена из кеша SQL Server.

Я рекомендую использовать пейджинг на чистой стороне сервера и выполнить некоторую настройку производительности, если это необходимо.

+0

+1 для второго и третьего абзацев. (@NicoDB - Pure server-side paging всегда работал очень хорошо для меня тоже). – JasCav

+0

Спасибо за быстрый ответ. Что касается сортировки, это именно то, что я хочу: сортировка по-на-странице (для каждой страницы). Я использую внешние поля для предварительной фильтрации результатов на стороне сервера и нажатия данных в сетку, потому что они огромные и очень сложные (многие присоединяются, а не исполняются)! То, что я пытаюсь выполнить, можно легко сделать с помощью события onPage, единственная проблема заключается в том, что информация пейджера неточна и доступна только для чтения :( – NicoDB

+0

@NicoDB - Вы получили эту работу? У меня такое же требование, как и у вас, и сталкиваясь с одной и той же проблемой, т.е. «информация пейджера неточна и доступна только для чтения». – Vipresh

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