Как работает пейджинг в asp.net? - PullRequest
2 голосов
/ 23 августа 2010

Мне интересно узнать, как работает пейджинг в asp.net?Если мой запрос возвращает 500 записей, и мои ограничения по страницам в режиме просмотра сетки составляют 25 записей на страницу, при загрузке таблицы просмотра набор записей возвращает 25 записей или 500 записей?

Если набор записей возвращает 25 записей, как ado взаимодействует с SQL, чтобы возвращать записи для второй страницы?

Если набор записей возвращает 500 записей, кэшируются ли они на стороне клиента?

Ответы [ 2 ]

4 голосов
/ 23 августа 2010

С MSDN :

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

Таким образом, ответ таков: на самом деле он не выполняет эффективную «подкачку страниц», как многие аспекты веб-форм, все это абстрагировано. На самом деле это не «ВЫБРАТЬ ТОП 10».

Это просто игнорирование записей, которые ему не нужны, но вызов БД по-прежнему "SELECT *".

Именно поэтому многие люди (включая меня) предпочитают писать собственные, но простые подкачки с помощью LINQ, используя методы расширения Skip и Take IEnumerable.

Например,

yourDbContext.Where(s => somePredicate).Skip((pageNum - 1) * pageSize).Take(pageSize);
0 голосов
/ 29 августа 2010

Возможно, вы захотите зависеть от подходов к разбиению на страницы на стороне клиента через javascript. jqGrid - это отличное решение на основе jQuery. Конечно, это будет означать, что вам придется загружать все данные на странице. В противном случае вам нужно написать хранимую процедуру для возврата данных с определенной страницы. Но в этом случае вам придется реализовать свои собственные методы пейджинга. Такие хранимые процедуры, которые вы создаете, всегда должны возвращать два набора результатов. Один, который возвращает фактические данные, и другой набор результатов, который возвращает основную информацию о нумерации страниц, такую ​​как общее количество записей, общее количество страниц и текущая страница.

...