Partager via


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

Mise à jour : novembre 2007

Vous pouvez personnaliser le contrôle FormView en ajoutant des modèles qui permettent à l'utilisateur d'afficher ou de modifier les données affichées par le contrôle. Le contenu de chaque modèle se compose de balises, de contrôles contenant les expressions de liaison de données et de boutons de commande qui modifient le mode du contrôle FormView.

Remarque :

Pour plus d'informations sur les expressions de liaison de données, consultez Vue d'ensemble des expressions de liaison de données.

Modèles d'affichage

Le modèle d'affichage principal pour le contrôle FormView est le modèle ItemTemplate. Le modèle ItemTemplate affiche les données dépendantes en mode lecture seule. Les contrôles inclus dans un modèle ItemTemplate sont des contrôles qui affichent uniquement des données, par exemple un contrôle Label. Le modèle peut contenir également des boutons de commande pour modifier le mode d'insertion, de modification ou de suppression de l'enregistrement actif par le contrôle FormView. Vous liez les contrôles du modèle aux données à l'aide d'une expression de liaison de données qui inclut la méthode Eval pour la liaison de données unidirectionnelle, comme indiqué dans l'exemple suivant.

<asp:FormView ID="FormView1"
  DataSourceID="SqlDataSource1"
  DataKeyNames="ProductID"     
  RunAt="server">

  <ItemTemplate>
    <table>
      <tr><td align="right"><b>Product ID:</b></td>       <td><%# Eval("ProductID") %></td></tr>
      <tr><td align="right"><b>Product Name:</b></td>     <td><%# Eval("ProductName") %></td></tr>
      <tr><td align="right"><b>Category ID:</b></td>      <td><%# Eval("CategoryID") %></td></tr>
      <tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
      <tr><td align="right"><b>Unit Price:</b></td>       <td><%# Eval("UnitPrice") %></td></tr>
    </table>                 
  </ItemTemplate>                   
</asp:FormView>
<asp:FormView ID="FormView1"
  DataSourceID="SqlDataSource1"
  DataKeyNames="ProductID"     
  RunAt="server">

  <ItemTemplate>
    <table>
      <tr><td align="right"><b>Product ID:</b></td>       <td><%# Eval("ProductID") %></td></tr>
      <tr><td align="right"><b>Product Name:</b></td>     <td><%# Eval("ProductName") %></td></tr>
      <tr><td align="right"><b>Category ID:</b></td>      <td><%# Eval("CategoryID") %></td></tr>
      <tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
      <tr><td align="right"><b>Unit Price:</b></td>       <td><%# Eval("UnitPrice") %></td></tr>
    </table>                 
  </ItemTemplate>                 
</asp:FormView>

Le modèle ItemTemplate peut inclure des contrôles LinkButton qui modifient le mode du contrôle FormView selon la valeur CommandName. Une valeur CommandName de New affiche l'enregistrement en mode insertion et charge le modèle InsertItemTemplate, ce qui permet à l'utilisateur d'entrer des valeurs pour un nouvel enregistrement. Vous pouvez ajouter un bouton dont la valeur CommandName est Edit au modèle ItemTemplate pour afficher le contrôle FormView en mode édition. Un bouton dont la valeur CommandName est Delete peut être ajouté au modèle ItemTemplate pour permettre aux utilisateurs de supprimer l'enregistrement actif de la source de données.

Les autres modèles d'affichage que vous pouvez utiliser avec le contrôle FormView sont le modèle EmptyDataTemplate qui s'affiche lorsque aucun enregistrement actif ne doit être lié, et les modèles HeaderTemplate et FooterTemplate qui définissent le contenu de l'en-tête et du pied de page respectivement.

Modèles de modification et d'insertion

Vous pouvez utiliser le modèle EditItemTemplate pour permettre aux utilisateurs de modifier un enregistrement existant, et le modèle InsertItemTemplate pour rassembler des valeurs pour un nouvel enregistrement à insérer dans la source de données. Dans les modèles EditItemTemplate et InsertItemTemplate, vous incluez généralement les contrôles qui acceptent les entrées d'utilisateur, par exemple les contrôles TextBox, CheckBox ou DropDownList. Vous pouvez ajouter également des contrôles pour afficher les données en lecture seule, et des boutons de commande pour permettre aux utilisateurs de modifier l'enregistrement actif, d'insérer un nouvel enregistrement ou d'annuler l'action actuelle. Vous liez les contrôles des modèles EditItemTemplate et InsertItemTemplate aux données à l'aide d'une expression de liaison de données qui inclut la méthode Bind pour la liaison de données bidirectionnelle, comme indiqué dans l'exemple suivant.

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                 SELECT @EmpID = SCOPE_IDENTITY()"
  UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                   WHERE EmployeeID=@EmployeeID"
  DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
  OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
  RunAt="server">

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

  <InsertParameters>
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
  </InsertParameters>

</asp:sqlDataSource>
<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                 SELECT @EmpID = SCOPE_IDENTITY()"
  UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                   WHERE EmployeeID=@EmployeeID"
  DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
  OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
  RunAt="server">

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

  <InsertParameters>
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
  </InsertParameters>

</asp:sqlDataSource>
Remarque :

Lorsque vous utilisez un contrôle ListControl, par exemple un contrôle DropDownList, vous avez la possibilité de lier la valeur du contrôle DropDownList à un champ de l'enregistrement limité actuel lorsque les valeurs de liste du contrôle DropDownList sont liées à une liste distincte de valeurs possibles. Dans ce cas, utilisez l'expression Bind pour lier la propriété SelectedValue du contrôle DropDownList à l'enregistrement limité actuel et spécifiez la source de données, la propriété DataTextField et la propriété DataValueField du contrôle DropDownList à la liste de valeurs possibles.

Le modèle EditItemTemplate est chargé lorsque les utilisateurs cliquent sur un bouton de commande dont la valeur CommandName est Edit. Vous pouvez ajouter un bouton de commande LinkButton dont la valeur CommandName est Update pour prendre les valeurs liées actuelles et les envoyer au contrôle de source de données pour la mise à jour. Vous pouvez ajouter un bouton de commande LinkButton dont la valeur CommandName est Cancel pour ignorer les valeurs liées actuelles et retourner le contrôle FormView en mode lecture seule et charger le modèle ItemTemplate.

Le modèle InsertItemTemplate est chargé lorsque les utilisateurs cliquent sur un bouton de commande dont la valeur CommandName est New. Vous pouvez ajouter un bouton de commande LinkButton dont la valeur CommandName est Insert pour envoyer les valeurs d'un nouvel enregistrement au contrôle de source de données. Vous pouvez ajouter un bouton de commande LinkButton dont la valeur CommandName est Cancel pour ignorer les nouvelles valeurs et retourner le contrôle FormView en mode lecture seule et charger le modèle ItemTemplate.

Pour obtenir un exemple d'utilisation du contrôle FormView pour modifier des données, consultez Modification des données à l'aide d'un contrôle serveur Web FormView.

Modèle Pagination des données

Dans le contrôle FormView, une page de données est un enregistrement lié unique. 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 plus d'informations, consultez Pagination dans un contrôle serveur Web FormView.

Pour obtenir un exemple de modèle PagerTemplate pour un contrôle FormView, consultez Pagination dans un contrôle serveur Web FormView.

Voir aussi

Concepts

Vue d'ensemble du contrôle serveur Web FormView