Разбиение по страницам в серверном веб-элементе управления GridView
Обновлен: Ноябрь 2007
Элемент управления ASP.NET GridView имеет встроенную функцию разбиения по страницам, поддерживающую основную функциональность разбивки. Разработчик может использовать пользовательский интерфейс разбиения по страницам по умолчанию или создать настраиваемый интерфейс разбивки.
Как работает разбиение по страницам в элементе управления GridView
Элемент управления GridView поддерживает разбиение по страницам по элементам в его источнике данных. Чтобы включить разбиение по страницам, присвойте свойству AllowPaging значение true. Элемент управления GridView поддерживает разбиение по страницам одним из следующих способов:
Если элемент управления GridView привязан к элементу управления источником данных, который способен по запросу возвращать одну страницу данных, элемент управления GridView будет использовать эту возможность напрямую. Число запрошенных строк будет различным в зависимости от числа строк на страницу, указанного в свойстве PageSize, а также от того, поддерживает ли источник данных получение общего числа строк.
Примечание. Из всех элементов управления источником данных, включенных в состав платформы .NET Framework, только элемент управления ObjectDataSource поддерживает возврат одной страницы данных.
Примечание. При создании источника данных (например, при реализации метода SelectCountMethod в объекте источнике для элемента управления ObjectDataSource), настоятельно рекомендуется, чтобы источник данных возвращал количество всех строк при указании страниц данных. Это позволяет минимизировать число записей, которое должен запросить элемент управления GridView для извлечения страницы данных. Если счетчик общего количества строк предоставляется с помощью объекта данных источника, то элемент управления GridView будет единовременно запрашивать только страницу строк. Если общее количество строк не предоставляется, то элемент управления GridView должен запросить все строки из источника данных (начиная со строки, представляющей запрошенную страницу данных) и удалить все строки, за исключением отображаемой строки.
Если элемент управления GridView привязан к элементу управления источником данных, который не поддерживает функцию разбиения по страницам напрямую, или если элемент управления GridView привязан к структуре данных в коде через свойство DataSource, то элемент управления GridView выполнит разбивку, получив все записи данных из источника, отображая только записи с текущей страницы и удаляя все остальное. Это поддерживается только в том случае, если источник данных для элемента управления GridView возвращает коллекцию, которая реализует интерфейс ICollection (включая наборы данных).
Примечание. Если источник данных не поддерживает разбиение по страницам напрямую и не реализует интерфейс ICollection, элемент управления GridView не может выполнить разбивку. Например, если использовать элемент управления SqlDataSource и для его свойства DataSourceMode задать значение DataReader, то GridView элемент управления не сможет выполнить разбиение по страницам.
Настройка параметров разбиения по страницам и пользовательского интерфейса
Пользовательский интерфейс разбиения по страницам элемента управления GridView можно настроить несколькими способами. Можно задать размер страницы (то есть число элементов, отображаемых единовременно) с помощью свойства PageSize. Также можно задать текущую страницу элемента управления GridView, задав свойство PageIndex. Другое настраиваемое поведение можно указать с помощью свойства PagerSettings или предоставить шаблон страничного навигатора.
Режимы разбиения по страницам
Свойство PagerSettings предоставляет возможность настройки внешнего вида разбиения по страницам пользовательского интерфейса, автоматически созданного элементом управления GridView при установке свойства AllowPaging в значение true. Элемент управления GridView может отображать элементы управления направлением, позволяющие осуществлять прямые и обратные переходы, а также числовые элементы управления, которые позволяют пользователю осуществлять переход к заданной странице.
Свойство PagerSettings элемента управления GridView задается в классе PagerSettings. Можно настроить режим разбиения по страницам, задав свойство Mode элемента управления GridView. Например, можно настроить режим разбиения по страницам пользовательского интерфейса, установив его следующим образом:
GridView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast
Доступны следующие режимы:
Отображение элемента управления страничного навигатора
Элемент управления GridView содержит множество свойств, которые можно использовать для настройки текста и изображений для различных режимов страничного навигатора. Например, если требуется разрешить навигацию с помощью кнопок со стрелками, но необходимо настроить отображаемый текст, то его можно изменить с помощью свойств NextPageText и PreviousPageText, как показано в следующем примере:
GridView1.PagerSettings.NextPageText = "Click for next page"
GridView1.PagerSettings.PreviousPageText = "Click for previous page"
Кроме того, для настройки внешнего вида элементов управления разбиением по страницам можно использовать изображения. Класс PagerSettings содержит свойства для URL-адресов изображений для командных кнопок перехода к первой, последней, предыдущей и следующей страницам.
Наконец, внешним видом команд разбиения по страницам можно управлять, присвоив свойству PagerStyle элемента управления GridView значение TableItemStyle.
Шаблон постраничного просмотра данных
Если свойство AllowPaging элемента управления GridView имеет значение true, то GridView будет автоматически добавлять элементы управления пользовательского интерфейса (UI) для разбиения по страницам. Пользовательский интерфейс для разбиения по страницам можно настроить путем добавления шаблона PagerTemplate. Чтобы задать, какую операцию разбиения необходимо выполнить, включите элемент управления Button и установите его свойство CommandName в значение Page, а свойство CommandArgument в одно из следующих значений:
First Для перехода к первой странице.
Last Для перехода к последней странице.
Prev Для перехода к предыдущей странице.
Next Для перехода к следующей странице данных
Число Для перехода к определенной странице.
События разбиения
Элемент управления GridView вызывает два события при переходе к новой странице данных. Событие PageIndexChanging происходит перед тем, как элемент управления GridView выполняет операцию разбиения. Событие PageIndexChanged происходит после того, как новая страница данных возвращается элементу управления GridView.
Событие PageIndexChanging при необходимости можно использовать для отмены операции или для выполнения задачи перед тем, как элемент управления GridView запросит новую страницу данных. Событие PageIndexChanged можно использовать для выполнения задачи после того, как пользователь перейдет на другую страницу данных.