Compartilhar via


Paginação no controle FormView do servidor Web

O controle ASP.NET FormView possui suporte interno para permitir que os usuários paginem através de um registro de cada vez.O controle também suporta a personalização da interface de paginação do usuário (UI).No controle FormView, uma página de dados é um registro único acoplado.

Como a paginação funciona no controle FormView

O controle FormView suporta paginação nos itens da sua fonte de dados.Para ativar o comportamento de paginação, você pode definir a propriedade AllowPaging como true.O tamanho de página para o controle FormView sempre é uma linha por página.

Se o controle FormView for vinculado a um controle da fonte de dados ou para qualquer estrutura de dados que implementa a interface ICollection (inclusive datasets), o controle obtém todos os registros a partir da fonte de dados, exibe o registro para a página atual e descarta o resto.Quando o usuário move para outra página, o controle FormView repete o processo, exibindo um registro diferente.

Observação:

Se a fonte de dados não implementa a interface ICollection, o controle FormView não pode paginar.Por exemplo, se você estiver usando um controle SqlDataSource e tiver definido sua propriedade DataSourceMode para DataReader, o controle FormView não pode implementar paginação.

Algumas fontes de dados, como o controle ObjectDataSource oferecem recursos mais avançados de paginação.Nesses casos o controle FormView tira proveito dos recursos mais avançados da fonte de dados para obter um melhor desempenho e a flexibilidade de paginação.O número de linhas solicitado pode variar dependendo se a fonte de dados oferece suporte para retornar a contagem total de linhas.

Observação:

Se você estiver criando um fonte de dados (como implementando um método SelectCountMethod no objeto origem para o controle ObjectDataSource), é altamente recomendável que sua fonte de dados retorne a contagem total de linhas ao fornecer páginas de dados.Isso minimiza o número de registros que o controle FormView deve solicitar para recuperar uma página de dados.Se o número total de linhas é fornecido pelo controle da fonte de dados, o controle FormView irá solicitar apenas uma página de linhas por vez.Se a contagem total de linhas não for fornecida, o controle FormView deve solicitar todas as linhas a partir da fonte de dados (começando com a linha que representa a página solicitada de dados) e descartar todas as linhas, exceto a linha que está sendo exibida.

Personalizar a interface do usuário e configurações de paginação

Você pode personalizar a interface do usuário (interface do usuário) da paginação FormView em um número de formas.

Modos de paginação

A propriedade PagerSettings permite que você personalize a aparência da interface do usuário de paginação (IU) que é gerada pelo controle FormView quando você define a propriedade AllowPaging para true.O controle FormView pode exibir instruções de controles que permitem a navegação avançar e retroceder assim como controles numéricos que permitem que um usuário mova para uma página específica.

A propriedade PagerSettings do controle FormView é definida como uma classe PagerSettings.Você pode personalizar o modo de paginação, definindo a propriedade Mode do controle FormView como um valor PagerButtons.Por exemplo, você pode personalizar o modo de interface do usuário de paginação, definindo-o da seguinte maneira:

FormView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast

Os modos disponíveis são:

Aparência do controle paginação

O controle FormView tem várias propriedades que você pode usar para personalizar o texto e as imagens para diferentes modos de paginação.Por exemplo, se você definir o modo de paginação de um controle FormViewNextPrevious e desejar personalizar o texto que é exibido, você pode definir a propriedade NextPageText e PreviousPageText para seus próprios valores.Por padrão, as propriedades PreviousPageText e NextPageText são definidas para "< " e " >", respectivamente.

Você também pode usar imagens para personalizar a aparência de controles de paginação.A classe PagerSettings inclui propriedade da URL da imagem para os botões de comando: primeiro, último, anterior e Próxima Página.

Finalmente, você pode controlar a aparência dos comandos de paginação, definindo a propriedade PagerStyle do controle FormView como um TableItemStyle.

Modelo de paginação dados

Se você conjunto o AllowPaging propriedade das FormView o controle para true, o FormView controle adicionará automaticamente controles de interface do usuário na paginação. Você pode personalizar do interface do usuário para paginação adicionando um modelo PagerTemplate.Para especificar qual operação de paginação executar, adicione um controle Button para o modelo, e então defina a propriedade CommandName como Page e sua propriedade CommandArgument como um dos seguintes valores:

  • First Navegar para a primeira página.

  • Last Navegar para a última página.

  • Prev Navegar para a página anterior.

  • Next Navegar para a próxima página de dados

  • Um número     para indicar uma página específica.

O exemplo de código a seguir mostra um controle FormView configurado para fornecer paginação.

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

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

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

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel"  Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel"  Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel"  Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel"  Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel"  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 >
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

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

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

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

Consulte também

Conceitos

Visão geral do controle do servidor da Web FormView