Share via


Pagination dans un contrôle serveur Web FormView

Mise à jour : novembre 2007

Le contrôle FormView ASP.NET propose une prise en charge intégrée permettant aux utilisateurs de paginer (parcourir) un à un les enregistrements. Il prend également en charge la personnalisation de l'interface utilisateur de pagination. Dans le contrôle FormView, une page de données est un enregistrement lié unique.

Fonctionnement de la pagination dans le contrôle FormView

Le contrôle FormView prend en charge la pagination sur les éléments dans sa source de données. Pour activer le comportement de pagination, vous pouvez affecter la valeur true à la propriété AllowPaging. La taille de page pour le contrôle FormView est toujours d'une ligne par page.

Si le contrôle FormView est lié à un contrôle de source de données ou à une structure de données qui implémente l'interface ICollection (y compris les groupes de données), le contrôle obtient tous les enregistrements de la source de données, affiche l'enregistrement pour la page en cours et ignore le reste. Lorsque l'utilisateur passe à une autre page, le contrôle FormView répète le processus, en affichant un autre enregistrement.

Remarque :

Si la source de données n'implémente pas l'interface ICollection, le contrôle FormView ne peut pas effectuer de pagination. Par exemple, si vous utilisez un contrôle SqlDataSource et que vous avez affecté la valeur DataReader à sa propriété DataSourceMode, le contrôle FormView ne peut pas implémenter la pagination.

Certaines sources de données, telles que le contrôle ObjectDataSource, proposent des fonctionnalités de pagination plus avancées. Dans ces cas, le contrôle FormView tire parti des fonctions plus avancées de la source de données pour améliorer ses performances et sa souplesse durant la pagination. Le nombre de lignes demandé peut varier selon si la source de données prend en charge la récupération du nombre total de lignes.

Remarque :

Si vous créez une source de données (par exemple, l'implémentation d'une méthode SelectCountMethod dans l'objet source pour le contrôle ObjectDataSource), il est vivement recommandé que votre source de données retourne le nombre total de lignes lorsqu'elle fournit des pages de données. Cela réduit le nombre d'enregistrements que le contrôle FormView doit demander pour récupérer une page de données. Si le nombre total de lignes est fourni par l'objet de données source, le contrôle FormView demandera uniquement une seule ligne à la fois pour chaque page. Si le nombre total de lignes n'est pas indiqué, le contrôle FormView doit demander toutes les lignes de la source de données (en commençant par la ligne qui représente la page de données demandée) et ignorer toutes les lignes à l'exception de la ligne affichée.

Personnalisation des paramètres de pagination et de l'interface utilisateur

Vous pouvez personnaliser l'interface utilisateur de la pagination FormView de plusieurs manières.

Modes de pagination

La propriété PagerSettings vous permet de personnaliser l'apparence de l'interface utilisateur de pagination générée par le contrôle FormView lorsque vous affectez la valeur true à la propriété AllowPaging. Le contrôle FormView peut afficher des contrôles de direction qui permettent la navigation avant et arrière, ainsi que des contrôles numériques qui permettent à un utilisateur d'accéder à une page spécifique.

Une classe PagerSettings est affectée à la propriété PagerSettings du contrôle FormView. Vous pouvez personnaliser le mode de pagination en affectant la valeur PagerButtons à la propriété Mode du contrôle FormView. Par exemple, vous pouvez personnaliser le mode de l'interface utilisateur de pagination en le définissant comme suit :

FormView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast

Vous avez le choix entre les modes suivants :

Apparence du contrôle Pager

Le contrôle FormView est doté de nombreuses propriétés que vous pouvez utiliser pour personnaliser le texte et les images pour les différents modes du pagineur. Par exemple, si vous affectez la valeur NextPrevious au mode de pagination d'un contrôle FormView et que vous souhaitez personnaliser le texte affiché, vous pouvez affecter vos propres valeurs aux propriétés NextPageText et PreviousPageText. Par défaut, les propriétés PreviousPageText et NextPageText ont la valeur « < » et « > », respectivement.

Vous pouvez aussi utiliser des images pour personnaliser l'apparence de vos contrôles de pagination. La classe PagerSettings inclut les propriétés de l'URL de l'image pour les boutons de commande de page (première, dernière, précédente et suivante).

Enfin, vous pouvez contrôler l'apparence des commandes de pagination en affectant une valeur TableItemStyle à la propriété PagerStyle du contrôle FormView.

Modèle Pagination des données

Si vous affectez à la propriété AllowPaging du contrôle FormView la valeur true, le contrôle FormView ajoute automatiquement les contrôles d'interface utilisateur pour la pagination. Vous pouvez personnaliser l'interface utilisateur de pagination en ajoutant un modèle PagerTemplate. Pour spécifier l'opération de pagination à effectuer, ajoutez un contrôle Button au modèle, puis affectez la valeur Page à sa propriété CommandName et l'une des valeurs suivantes à sa propriété CommandArgument :

  • First   Pour accéder à la première page.

  • Last   Pour accéder à la dernière page.

  • Prev   Pour accéder à la page précédente.

  • Next   Pour accéder à la page de données suivante.

  • Un nombre   Pour indiquer une page spécifique.

L'exemple de code suivant montre un contrôle FormView configuré pour fournir la pagination.

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

Voir aussi

Concepts

Vue d'ensemble du contrôle serveur Web FormView