Улучшить логику разбиения таблиц

У меня есть GridView, заполненный последними 100 записями документов (название, описание, автор, дата создания). Я использую плагин DataTable jQuery для предоставления дополнительных функций, таких как: перетаскивание столбцов, поиск, пейджинг.

Поскольку общее количество документов может быть очень большим (тысячи записей), я решил ограничить предоставленные данные всего 100 записями. Это удовлетворит почти 90 % случаев.
Однако некоторым пользователям может потребоваться выполнить поиск/просмотр и более старых документов. Поэтому мне нужно реализовать логику, чтобы разрешить загрузку «дальнейших» 100 записей.

Мой процесс будет следующим:
1) Загрузите первые 100 записей.
2) Предоставьте дополнительную кнопку -> После нажатия вставьте в таблицу еще 100 записей (следовательно, 200 записей).

Поскольку мне действительно не нравится вставлять дополнительную кнопку, чтобы «подтолкнуть» новые данные, как это можно сделать лучше?


person Francesco    schedule 05.08.2011    source источник
comment
Почему вы не хотите кнопку для этого? Это стандарт практически для всех поисковых систем ("перейти на следующую страницу" или что-то в этом роде...). Или вы думаете о загрузке большего количества результатов, если пользователь просто прокручивает вашу страницу?   -  person fgysin    schedule 05.08.2011
comment
Плагин jQuery предоставляет уже 2 кнопки для перехода к следующей/предыдущей странице. На странице будет от 20 до 50 записей, затем остальные будут отображаться на следующей странице (без необходимости прокручивать вниз, а затем, когда отображается последняя, ​​автоматически загружать следующие 100). Идея кнопки мне показалась не блестящей с точки зрения дизайна/верстки. Но кнопка с надписью «загрузить старые данные» может иметь смысл даже в текущем макете.   -  person Francesco    schedule 05.08.2011


Ответы (1)


Вы можете использовать опцию «bScrollInfinite: true» для таблиц данных. Вам также нужно будет указать параметр sScrollY для обозначения высоты вашей таблицы данных.

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

"bScrollInfinite": true,
"sScrollY": 350,
person Keith.Abramo    schedule 05.08.2011
comment
Спасибо за хитн. Этот подход может быть хорошим, я только боюсь, что если я загружу 1000+ записей в таблицу, даже используя bScrollInfinite, загрузка этой страницы займет некоторое время. Из того, что я видел, нет вызова Ajax к серверу для получения строк по мере необходимости, но весь набор данных должен быть уже доступен и отображаться только при необходимости. Поэтому это просто представит другой способ разбиения данных на страницы. - person Francesco; 08.08.2011
comment
Таблицы данных Jquery имеют возможность фактической обработки на стороне сервера. Подробнее см. по этой ссылке datatables.net/examples/data_sources/server_side.html - person Keith.Abramo; 08.08.2011