Использование элементов управления ListView и DataPager в ASP.NET 3.5 - Перелистывание с помощью элементов управления ListView и DataPager

ОГЛАВЛЕНИЕ

Перелистывание с помощью элементов управления ListView и DataPager

Элементы управления GridView, DetailsView и FormView поддерживают функциональность перелистывания, которую можно активировать выбрав соответствующую опцию. При включении поддержки перелистывания данные элементы автоматически обрабатывают соответствующий интерфейс, содержащий в себе LinkButtons, Buttons и ImageButtons. Конфигурация интерфейса перелистывания (используются ли при этом ссылки на следующую и предыдущую страницу (Next/Previous), используется ли опция перелистывания по номеру, отображение текста в различных кнопках и так далее) настраивается посредством свойств элемента управления данными. Притом что такое конфигурирование  необходимо, у вас есть возможность специализировать небольшую часть. К примеру, опции конфигурации позволяют вам указать расположение интерфейса перелистывания - выше или ниже элемента управления (либо в обоих местах). Но если вы хотите отобразить данный интерфейс где-нибудь в другом месте, отдельно от основной части интерфейса, то вам не повезло.

ASP.NET исправил данный недостаток при помощи элемента управления ListView, отделив  поддержку перелистывания от элемента управления ListView и переместив ее в отдельный, самостоятельный DataPager. Основным назначением  элемента управления DataPager является обработка интерфейса перелистывания и сообщение с соответствующим элементом управления ListView тогда, когда пользователь взаимодействует с интерфейсом (к примеру, пользователь выбрал переход к последней странице). Такое явное разделение между ListView и DataPager позвляет получить больше возможностей специализации интерфейса перелистывания и позиционирования, в чем мы убедимся далее в статье. Читайте далее, чтобы узнать больше об этом!

Основы страничной организации

Элемент управления DataPager реализует страничную организацию при помощи трех битов информации:

  • PagedControlID - ID элемента управления ListView , для которого DataPager генерирует интерфейс листания.
  • StartRowIndex - индекс первой записи, которую необходимо отобразить на данной странице
  • MaximumRows - максимальное количество строк отображаемых на одной странице
К примеру, для того, чтобы отобразить первую страницу информации при показе 10 записей на одной странице, значения StartRowIndex и MaximumRows должны быть соответственно 0 и 10. Чтобы отобразить вторую страницу информации, значения должны быть 10 и 10. Для того, чтобы отобразить третью страницу, значения должны быть 20 и 10. Также существует свойство TotalRowCount доступное только для чтения, которое возвращает общее число записей используемых при перелистывании .

Элемент управления DataPager обрабатывает набор DataPagerFields, где каждый DataPagerField отображает интерфейс листинга. Здесь .NET Framework версии 3.5 включает в себя три заранее созданных DataPagerFields: NextPreviousPagerField, NumericPagerField и TemplatePagerField. NextPreviousPagerField отображает кнопки First/Previous/Next/Last (Первая/Предыдущая/Следующая/Последняя); NumericPagerField отображает серию номеров страниц; TemplatePagerField отображает страничный интерфейс при помощи шаблона, который мы должны создать.

Когда пользователь взаимодействует с интерфейсом, предоставляющим страничную организацию информации, при этом он, к примеру, нажал кнопку Next, будет выполнен постбэк, и DataPagerField узнает, что событие было вызвано одним из его элементов интерфейса. DataPagerField затем определяет новые значения StartRowIndex и MaximumRows и передает их в метод SetPageProperties класса DataPager. DataPager затем вызывает ассоциированный метод SetPageProperties элемента ListView, который вызовет повторную привязку ListView к источнику данных и выводу на экран только соответствующего набора записей.

Стандартное перелистывание (Default Paging) против специализированного (Custom Paging)
Элементы управления ListView и DataPager предлагают две модели перелистывания: стандартная и специализированная. Две модели предоставляют компромиссное решение между производительностью и легкостью настройки/конфигурации/использования . Элемент управления SqlDataSource использует стандартное перелистывание, а ObjectDataSource по умолчанию использует стандартную модель, но при этом имеет простой механизм указания того, что он должен использовать специализированное перелистывание. Помните, что ListView всего лишь отображает информацию - на самом деле элемент управления источником данных получает информацию из базы данных.

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

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