Modification de données à l'aide de contrôles de source de données

Mise à jour : novembre 2007

Les contrôles de source de données étendent considérablement les fonctionnalités des contrôles liés aux données, tels que les contrôles ListView, GridView, FormView et DetailsView, pour modifier des données au niveau de la source de données en nécessitant peu de code supplémentaire. Dans la mesure où le contrôle de source de données exécute la modification des données, les contrôles liés aux données peuvent prendre en charge des mises à jour sans nécessiter d'informations spécifiques sur la base de données ou une autre source de données. Vous pouvez utiliser des contrôles de source de données différents avec n'importe quelle combinaison de contrôles dans la page. De plus, vous pouvez modifier la base de données ou la source de données utilisée par un contrôle lié aux données en modifiant sa propriété DataSourceID afin que celle-ci pointe vers un contrôle de source de données différent.

Commandes de modification de données

Vous pouvez configurer les contrôles ObjectDataSource, SqlDataSource et AccessDataSource avec les commandes de données pour insérer, mettre à jour et supprimer des données dans le magasin de données qui leur est associé.

Lorsque vous utilisez le contrôle LinqDataSource pour modifier des données, vous n'avez pas à fournir de commandes pour insérer, mettre à jour et supprimer des données. Ces commandes sont générées automatiquement pour vous.

Modification de données avec le contrôle LinqDataSource

Vous activez les opérations d'insertion, de mise à jour et de suppression avec le contrôle LinqDataSource en affectant aux propriétés EnableInsert, EnableUpdate et EnableDelete la valeur true. Lorsque ces propriétés ont la valeur true, le contrôle LinqDataSource utilise LINQ to SQL pour créer automatiquement les commandes permettant de modifier les données.

L'exemple suivant décrit un contrôle LinqDataSource dont EnableInsert, EnableUpdate et EnableDelete ont la valeur true. Un contrôle DetailsView affiche les données et crée pour chaque commande un bouton qui permet aux utilisateurs de modifier les données.

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    EnableUpdate="true"
    EnableInsert="true"
    EnableDelete="true"
    ID="LinqDataSource1" 
    >
</asp:LinqDataSource>
<asp:DetailsView 
    DataKeyNames="ProductID"
    AutoGenerateEditButton="true"
    AutoGenerateDeleteButton="true"
    AutoGenerateInsertButton="true"
    AllowPaging="true"
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    >
</asp:DetailsView>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    EnableUpdate="true"
    EnableInsert="true"
    EnableDelete="true"
    ID="LinqDataSource1" 
    >
</asp:LinqDataSource>
<asp:DetailsView 
    DataKeyNames="ProductID"
    AutoGenerateEditButton="true"
    AutoGenerateDeleteButton="true"
    AutoGenerateInsertButton="true"
    AllowPaging="true"
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    >
</asp:DetailsView>

Modification des données avec le contrôle ObjectDataSource

Le contrôle ObjectDataSource permet de spécifier une méthode d'objet de données pour exécuter un type spécifique de mise à jour. La propriété InsertMethod spécifie la méthode d'objet de données appelée lorsque le contrôle ObjectDataSource insère un élément dans la source de données. De la même façon, la propriété UpdateMethod spécifie la méthode d'objet de données utilisée pour les mises à jour d'éléments, et la propriété DeleteMethod celle employée pour supprimer un élément de la source de données.

L'exemple de code suivant affiche un contrôle ObjectDataSource avec ses propriétés InsertMethod, UpdateMethod et DeleteMethod configurées avec les noms des méthodes de l'objet de données sous-jacent.

<asp:ObjectDataSource 
  ID="EmployeeDetailsObjectDataSource" 
   
  TypeName="Samples.AspNet.Controls.NorthwindEmployee" 
  SelectMethod="GetEmployee" 
  UpdateMethod="UpdateEmployee"
  DeleteMethod="DeleteEmployee"
  InsertMethod="InsertEmployee" 
  OnInserted="EmployeeDetailsObjectDataSource_OnInserted" >
  <SelectParameters>
    <asp:Parameter Name="EmployeeID" />  
  </SelectParameters>
  <InsertParameters>
    <asp:Parameter Name="NewEmployeeID" Direction="Output" 
                   Type="Int32" DefaultValue="0" />
  </InsertParameters>
</asp:ObjectDataSource>
<asp:ObjectDataSource 
  ID="EmployeeDetailsObjectDataSource" 
   
  TypeName="Samples.AspNet.Controls.NorthwindEmployee" 
  SelectMethod="GetEmployee" 
  UpdateMethod="UpdateEmployee"
  DeleteMethod="DeleteEmployee"
  InsertMethod="InsertEmployee" 
  OnInserted="EmployeeDetailsObjectDataSource_OnInserted" >
  <SelectParameters>
    <asp:Parameter Name="EmployeeID" />  
  </SelectParameters>
  <InsertParameters>
    <asp:Parameter Name="NewEmployeeID" Direction="Output" 
                   Type="Int32" DefaultValue="0" />
  </InsertParameters>
</asp:ObjectDataSource>

Pour plus d'informations, consultez Création d'un objet source de contrôle ObjectDataSource.

Modification de données avec les commandes SQL

Les contrôles SqlDataSource et AccessDataSource vous permettent de fournir des commandes SQL pour modifier des données au niveau de la source de données. La propriété InsertCommand spécifie une commande SQL qui permet d'insérer un enregistrement dans la source de données. De même, la propriété UpdateCommand spécifie une commande utilisée pour les mises à jour d'enregistrements et la propriété DeleteCommand une commande utilisée pour supprimer un enregistrement de la source de données.

L'exemple de code suivant affiche un contrôle SqlDataSource avec ses propriétés InsertCommand, UpdateCommand et DeleteCommand configurées avec des commandes SQL qui effectuent des tâches de mise à jour.

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

Pour plus d'informations, consultez Modification de données à l'aide du contrôle SqlDataSource.

Paramètres

Pour bénéficier d'une plus grande souplesse et sécurité dans vos scénarios de mise à jour de données, utilisez des paramètres pour passer des valeurs à insérer, à mettre à jour ou à supprimer dans un magasin de données. Les valeurs des paramètres peuvent inclure les valeurs des contrôles de la page, des variables de l'application ASP.NET, des valeurs de session, etc.

Les valeurs des paramètres proviennent en général de contrôles liés aux données lorsque ces contrôles appellent une opération de mise à jour, d'insertion ou de suppression. En outre, vous pouvez créer des objets paramètres explicites pour le contrôle de source de données pour une opération donnée, ce qui vous permet de personnaliser les paramètres. Par exemple, vous pouvez utiliser un objet paramètre explicite pour spécifier le type ou la direction d'un paramètre, ou encore définir une valeur par défaut pour un paramètre dans le cas où une valeur null est passée.

Pour le contrôle ObjectDataSource, les valeurs des paramètres sont passées en tant qu'arguments lors de l'appel à la méthode appropriée de l'objet de données sous-jacent. Pour le contrôle SqlDataSource ou AccessDataSource, les paramètres sont passés à la commande SQL utilisée pour la mise à jour. Pour plus d'informations et d'exemples, consultez Utilisation de paramètres avec des contrôles de source de données.

Événements

Les contrôles de source de données déclenchent des événements avant et après la modification des données. Vous pouvez utiliser ces événements pour exécuter du code avant l'exécution de l'opération de données, et notamment l'annulation de l'opération, et après l'opération de données. Par exemple, vous pouvez utiliser l'événement Deleting du contrôle SqlDataSource pour enregistrer des informations à propos d'un enregistrement prêt à être supprimé. Vous pouvez également utiliser l'événement Inserted du contrôle SqlDataSource pour récupérer une valeur d'identité générée automatiquement pour l'enregistrement récemment inséré.

Voir aussi

Autres ressources

Contrôles serveur Web de sources de données