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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

FormView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast

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

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

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

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

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

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

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

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

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

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

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

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

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

<%@ 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>FormView Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:FormView ID="ProductsFormView"
                DataSourceID="ProductsSqlDataSource"
                AllowPaging="true"
                runat="server">

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

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel" runat="server" Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel" runat="server" Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel" runat="server" Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel" runat="server" Text='<%# Eval("UnitPrice") %>' /></td>
                    </tr>
                  </table>                 
                </ItemTemplate>

                <PagerTemplate>
                  <table>
                    <tr>
                      <td><asp:LinkButton ID="FirstButton" CommandName="Page" CommandArgument="First" Text="<<" RunAt="server"/></td>
                      <td><asp:LinkButton ID="PrevButton"  CommandName="Page" CommandArgument="Prev"  Text="<"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="NextButton"  CommandName="Page" CommandArgument="Next"  Text=">"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="LastButton"  CommandName="Page" CommandArgument="Last"  Text=">>" RunAt="server"/></td>
                    </tr>
                  </table>
                </PagerTemplate>

              </asp:FormView>

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

        <asp:SqlDataSource ID="ProductsSqlDataSource" 
          SelectCommand="SELECT * FROM [Products]" 
          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>FormView Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:FormView ID="ProductsFormView"
                DataSourceID="ProductsSqlDataSource"
                AllowPaging="true"
                runat="server">

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

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel" runat="server" Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel" runat="server" Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel" runat="server" Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel" runat="server" Text='<%# Eval("UnitPrice") %>' /></td>
                    </tr>
                  </table>                 
                </ItemTemplate>

                <PagerTemplate>
                  <table>
                    <tr>
                      <td><asp:LinkButton ID="FirstButton" CommandName="Page" CommandArgument="First" Text="<<" RunAt="server"/></td>
                      <td><asp:LinkButton ID="PrevButton"  CommandName="Page" CommandArgument="Prev"  Text="<"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="NextButton"  CommandName="Page" CommandArgument="Next"  Text=">"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="LastButton"  CommandName="Page" CommandArgument="Last"  Text=">>" RunAt="server"/></td>
                    </tr>
                  </table>
                </PagerTemplate>

              </asp:FormView>

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

        <asp:SqlDataSource ID="ProductsSqlDataSource" 
          SelectCommand="SELECT ProductID, ProductName, CategoryID, QuantityPerUnit, UnitPrice FROM [Products]" 
          connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" 
          RunAt="server"/>

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

См. также

Основные понятия

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