Compartilhar via


Paginação em um Controle DetailsView do Servidor Web

O controle ASP.NET DetailsView 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 DetailsView, uma página de dados é um registro único acoplado.

Como a paginação funciona no controle DetailsView

O controle DetailsView suporta paginação nos itens da sua fonte de dados.Para ativar o comportamento de paginação, defina a propriedade AllowPaging como true.O tamanho de página solicitado pelo controle DetailsView sempre é uma linha.

Se o controle DetailsView 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 de 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 DetailsView repete o processo, exibindo um registro diferente.

Observação:

Se a fonte de dados não implementa a interface ICollection, o controle DetailsView não pode paginar.Por exemplo, se você estiver usando um controle SqlDataSource e tiver definido sua propriedade DataSourceMode para DataReader, o controle DetailsView 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 DetailsView 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 obter 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 DetailsView 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 DetailsView irá solicitar apenas uma página de linhas por vez.Se a contagem total de linhas não for fornecida, o controle DetailsView 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 DetailsView 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 DetailsView quando você define a propriedade AllowPaging para true.O controle DetailsView pode exibir instruções de controles que habilitam a navegação avançar e retroceder assim como controles numéricos que habilitam que um usuário mova para uma página específica.

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

DetailsView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast

Os modos disponíveis são:

Aparência do controle paginação

O controle DetailsView 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 DetailsViewNextPrevious 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 DetailsView como um valor TableItemStyle.

Modelo de paginação dados

Se você conjunto o AllowPaging propriedade das DetailsView o controle para true, o DetailsView 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 DetailsView 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>DetailsView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>DetailsView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

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

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

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

                <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>

Consulte também

Referência

Visão geral do controle de servidor Web DetailsView