Partager via


Vue d'ensemble du contrôle serveur Web FormView

Mise à jour : novembre 2007

Le contrôle FormView est utilisé pour afficher à un moment donné un enregistrement unique provenant d'une source de données. Lorsque vous utilisez le contrôle FormView, vous créez des modèles pour afficher et modifier des valeurs liées. Les modèles contiennent des contrôles, des expressions de liaison, et de mise en forme définissant l'apparence et les fonctionnalités du formulaire. Le contrôle FormView est souvent utilisé en association avec un contrôle GridView pour les scénarios maître/détail.

Cette rubrique contient les sections suivantes :

  • Contexte

  • Exemples de code

  • Référence de classe

Contexte

Le contrôle FormView vous permet de travailler avec un seul enregistrement d'une source de données, de façon similaire au contrôle DetailsView. La différence entre le contrôle FormView et les contrôles DetailsView est que le contrôle DetailsView utilise une disposition tabulaire dans laquelle chacun des champs de l'enregistrement s'affiche comme une ligne. À l'inverse, le contrôle FormView ne spécifie pas de disposition prédéfinie pour afficher l'enregistrement. A la place, vous créez un modèle contenant des contrôles pour afficher chacun des champs de l'enregistrement. Le modèle contient la mise en forme, les contrôles et les expressions de liaison utilisées pour créer le formulaire.

Le contrôle FormView est utilisé en général pour mettre à jour et insérer de nouveaux enregistrements. Il est souvent utilisé dans les scénarios maître/détails dans lesquels l'enregistrement du contrôle maître détermine l'enregistrement à afficher par le contrôle FormView. Pour plus d'informations et pour obtenir un exemple, consultez Modification des données à l'aide d'un contrôle serveur Web FormView.

Le contrôle FormView dépend des fonctionnalités du contrôle de source de données pour l'exécution de tâches telles que la mise à jour, l'insertion et la suppression d'enregistrements. Le contrôle FormView n'affiche qu'un seul enregistrement de données à la fois, même si sa source de données en affiche plusieurs.

Le contrôle FormView peut paginer automatiquement un enregistrement à la fois les données dans sa source de données associée. Cela requiert que les données sont représentées par un objet qui implémente l'interface ICollection, ou que la source de données sous-jacente prend en charge la pagination. Le contrôle FormView fournit l'interface utilisateur pour qui permet de naviguer entre les enregistrements. Pour activer le comportement de pagination, affectez la valeur true à la propriété AllowPaging et spécifiez une valeur PagerTemplate.

Le contrôle FormView expose plusieurs événements que vous pouvez gérer pour exécuter votre propre code. Les événements sont déclenchés avant et après les opérations d'insertion, de mise à jour et de suppression du contrôle de source de données associé. Vous pouvez également écrire des gestionnaires pour les événements ItemCreated et ItemCommand. Pour plus d'informations, consultez Événements du contrôle serveur Web FormView.

Remarque :

Le modèle d'événement du contrôle FormView est identique à celui du contrôle GridView. Toutefois, le contrôle FormView ne prend pas en charge un événement de sélection car l'enregistrement actuel est toujours l'élément sélectionné.

Liaison de données avec le contrôle FormView

Le contrôle FormView fournit les options de liaison de données ci-dessous :

  • Liaison de données à l'aide de la propriété DataSourceID, qui vous permet de lier le contrôle FormView à un contrôle de source de données. Cette méthode est recommandée car elle permet au contrôle FormView de tirer parti des fonctionnalités du contrôle de source de données et de fournir une fonctionnalité intégrée de mise à jour et de pagination.

  • Liaison de données à l'aide de la propriété DataSource, qui vous permet de créer des liaisons à divers objets, notamment des groupes de données ADO.NET et des lecteurs de données. Cette approche exige que vous écriviez le code pour toutes les fonctionnalités supplémentaires telles que la mise à jour et la pagination.

Lorsque vous créez une liaison à une source de données à l'aide de la propriété DataSourceID, le contrôle FormView prend en charge la liaison de données bidirectionnelle. Outre les données d'affichage du contrôle, vous pouvez activer le contrôle afin qu'il prenne en charge automatiquement les opérations d'insertion, de mise à jour et de suppression des données liées.

Pour plus d'informations, consultez Contrôles serveur Web de sources de données.

Création de l'interface utilisateur du contrôle FormView

Vous pouvez construire l'interface utilisateur du contrôle FormView en créant des modèles. Vous spécifiez des modèles différents pour les différentes actions. Vous créez un modèle ItemTemplate pour les modes affichage, insertion et modification. Vous pouvez contrôler la pagination à l'aide d'un modèle PagerTemplate ou personnaliser l'en-tête et le pied de page du contrôle FormView en utilisant respectivement HeaderTemplate et FooterTemplate. EmptyDataTemplate vous permet également de spécifier un modèle à afficher lorsque la source de données ne retourne aucune donnée. Pour plus d'informations, consultez Création de modèles pour le contrôle serveur Web FormView.

Les modèles d'éléments que vous créez pour le contrôle FormView spécifient le contenu du contrôle. Comme pour le contrôle DetailsView, vous pouvez personnaliser le format d'affichage du contrôle FormView en utilisant des propriétés de style telles que EditRowStyle, EmptyDataRowStyle, FooterStyle, HeaderStyle, InsertRowStyle, PagerStyle et les propriétés RowStyle.

L'exemple suivant présente une page ASP.NET simple qui utilise un contrôle FormView pour afficher des données.

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

Retour au début

Exemples de code

Création de modèles pour le contrôle serveur Web FormView

Pagination dans un contrôle serveur Web FormView

Modification des données à l'aide d'un contrôle serveur Web FormView

Événements du contrôle serveur Web FormView

Procédure pas à pas : affichage des données mises en forme dans les pages Web avec le contrôle serveur Web FormView

Retour au début

Référence de classe

Le tableau suivant répertorie les classes clés relatives au contrôle FormView.

Membre

Description

FormView

Classe principale du contrôle.

Retour au début

Voir aussi

Concepts

Vue d'ensemble de l'accès aux données ASP.NET

Modèles de contrôles serveur Web ASP.NET

Autres ressources

Contrôles de boîte à outils de données