Поделиться через


Разбиение по страницам в серверном веб-элементе управления DetailsView

Обновлен: Ноябрь 2007

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

Разбиение по страницам в элементе управления DetailsView

Элемент управления DetailsView поддерживает разбиение по страницам по записям в его источнике данных. Чтобы включить разбиение по страницам, свойство AllowPaging должно иметь значение true. Размер страницы, запрашиваемой элементом управления DetailsView, это всегда одна строка.

Если элемент управления DetailsView привязан к элементу управления источника данных или к любой структуре данных, которая реализует интерфейс ICollection (включая наборы данных), то элемент управления получает все записи из источника данных, отображает запись для текущей страницы и удаляет остальные. Когда пользователь перемещается на другую страницу, элемент управления DetailsView повторяет процесс, отображая другую запись.

ms227442.alert_note(ru-ru,VS.90).gifПримечание.

Если источник данных не реализует интерфейс ICollection, элемент управления DetailsView не может выполнять разбиение по страницам. Например, если использовать элемент управления SqlDataSource и задать его свойство DataSourceMode как DataReader, то элемент управления DetailsView не сможет реализовать разбиение по страницам.

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

ms227442.alert_note(ru-ru,VS.90).gifПримечание.

При создании источника данных (например, при реализации метода SelectCountMethod в объекте источнике для элемента управления ObjectDataSource), настоятельно рекомендуется, чтобы источник данных возвращал количество всех строк при указании страниц данных. Это минимизирует число записей, которое должен запросить элемент управления DetailsView для получения страницы данных. Если счетчик общего количества строк предоставляется с помощью объекта данных источника, то элемент управления DetailsView будет запрашивать только одну строку для каждой страницы. Если общее количество строк не поддерживается, то элемент управления DetailsView должен запросить все строки из источника данных (начиная со строки, представляющей запрошенную страницу данных) и удалить все строки, за исключением отображаемой строки.

Настройка параметров разбиения по страницам и пользовательского интерфейса

Существует несколько способов настройки пользовательского интерфейса разбиения по страницам DetailsView.

Режимы разбиения по страницам

Свойство PagerSettings предоставляет возможность настройки внешнего вида разбиения по страницам пользовательского интерфейса, созданной элементом управления DetailsView при установки свойства AllowPaging в значение true. Элемент управления DetailsView может отображать элементы управления направления, позволяющие осуществлять прямые и обратные переходы, а также числовые элементы управления, позволяющие пользователю осуществлять переход к определенной странице.

Свойство PagerSettings элемента управления DetailsView задается в классе PagerSettings. Можно настроить режим разбиения по страницам, присвоив свойству Mode элемента управления DetailsView значение PagerButtons. Например, можно настроить режим разбиения по страницам пользовательского интерфейса, установив его следующим образом:

DetailsView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast

Доступны следующие режимы:

Отображение элемента управления страничного навигатора

Элемент управления DetailsView содержит множество свойств, которые можно использовать для настройки текста и изображений для различных режимов страничного навигатора. Например, если необходимо для режима разбиения по страницам элемента управления DetailsView задать значение NextPrevious и требуется настроить отображаемый текст, то можно установить собственные значения свойств NextPageText и PreviousPageText. По умолчанию свойства PreviousPageText и NextPageText имеют значения «<» и «>» соответственно.

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

Наконец, внешним видом команд разбиения по страницам можно управлять, присвоив свойству PagerStyle элемента управления DetailsView значение TableItemStyle.

Шаблон постраничного просмотра данных

Если свойство AllowPaging элемента управления DetailsView имеет значение true, то DetailsView будет автоматически добавлять элементы управления пользовательского интерфейса (UI) для разбиения по страницам. Пользовательский интерфейс для разбиения по страницам можно настроить путем добавления шаблона PagerTemplate. Чтобы задать выполняемую операцию разбиения по страницам, добавьте к шаблону элемент управления Button и задайте для свойства CommandName значение Page, а свойству CommandArgument присвойте одно из следующих значений:

  • First   для перехода к первой странице.

  • Last   для перехода к последней странице.

  • Prev   для перехода к предыдущей странице.

  • Next   для перехода к следующей странице данных.

  • число   для указания определенной страницы.

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

<%@ Page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>DetailsView Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <h3>DetailsView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:DetailsView ID="EmployeesDetailsView"
                DataSourceID="EmployeesSqlDataSource"
                AutoGenerateRows="false"
                AllowPaging="true"
                DataKeyNames="EmployeeID"     
                runat="server">

                <HeaderStyle forecolor="white" backcolor="Blue" />                

                <Fields>
                  <asp:BoundField Datafield="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>                    
                  <asp:BoundField Datafield="FirstName"  HeaderText="First Name"/>
                  <asp:BoundField Datafield="LastName"   HeaderText="Last Name"/>                    
                </Fields>

                <PagerSettings Mode="NextPreviousFirstLast"
                               FirstPageText="<<"
                               LastPageText=">>"
                               PageButtonCount="1"  
                               Position="Top"/> 
              </asp:DetailsView>

            </td>
          </tr>
        </table>

        <asp:SqlDataSource ID="EmployeesSqlDataSource" 
          SelectCommand="SELECT * FROM [Employees]" 
          connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" 
          RunAt="server"/>

      </form>
  </body>
</html>
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>DetailsView Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <h3>DetailsView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:DetailsView ID="EmployeesDetailsView"
                DataSourceID="EmployeesSqlDataSource"
                AutoGenerateRows="false"
                AllowPaging="true"
                DataKeyNames="EmployeeID"     
                runat="server">

                <HeaderStyle forecolor="white" backcolor="Blue" />                

                <Fields>
                  <asp:BoundField Datafield="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>                    
                  <asp:BoundField Datafield="FirstName"  HeaderText="First Name"/>
                  <asp:BoundField Datafield="LastName"   HeaderText="Last Name"/>                    
                </Fields>

                <PagerSettings Mode="NextPreviousFirstLast"
                               FirstPageText="<<"
                               LastPageText=">>"
                               PageButtonCount="1"  
                               Position="Top"/> 
              </asp:DetailsView>

            </td>
          </tr>
        </table>

        <asp:SqlDataSource ID="EmployeesSqlDataSource" 
          SelectCommand="SELECT * FROM [Employees]" 
          connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" 
          RunAt="server"/>

      </form>
  </body>
</html>

См. также

Ссылки

Общие сведения о серверном веб-элементе управления DetailsView