Cette documentation est archivée et n’est pas conservée.

SqlDataSourceCommandEventArgs, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Fournit des données pour les événements Updating, Deleting et Inserting du contrôle SqlDataSource.

Espace de noms : System.Web.UI.WebControls
Assembly : System.Web (dans system.web.dll)

public class SqlDataSourceCommandEventArgs : CancelEventArgs
public class SqlDataSourceCommandEventArgs extends CancelEventArgs
public class SqlDataSourceCommandEventArgs extends CancelEventArgs

En ajoutant un délégué de gestionnaire d'événements pour gérer les événements Updating, Inserting ou Deleting, vous pouvez exécuter tout prétraitement supplémentaire requis ou annuler totalement la commande de base de données.

La classe SqlDataSourceCommandEventArgs étant dérivée de la classe CancelEventArgs, vous pouvez annuler une commande de base de données SqlDataSource en attente en attribuant la valeur true à la propriété Cancel. Vous pouvez examiner et manipuler CommandText, la collection Parameters et d'autres propriétés de commande avant d'exécuter la commande en accédant à l'objet DbCommand exposé par la propriété Command.

La classe SqlDataSourceCommandEventArgs est utilisée dans les méthodes OnUpdating, OnInserting et OnDeleting pour fournir l'accès à une commande de base de données SqlDataSource avant son exécution. Le contrôle SqlDataSource expose beaucoup d'événements que vous pouvez gérer pour travailler avec les objets de données sous-jacents pendant le déroulement d'une opération de données. Le tableau suivant répertorie les événements, ainsi que les EventArgs et les classes de gestionnaire d'événements associés, pour mieux vous guider vers les divers événements qui correspondent au cycle de vie d'une opération de données utilisant le contrôle SqlDataSource.

Événement

EventArgs

EventHandler

Selecting se produit avant la récupération des données.

SqlDataSourceSelectingEventArgs

SqlDataSourceSelectingEventHandler

Inserting, Updating, Deleting se produisent avant une opération d'insertion, de mise à jour ou de suppression.

SqlDataSourceCommandEventArgs

SqlDataSourceCommandEventHandler

Selected, Inserted, Updated, Deleted se produisent une fois terminées la récupération, l'insertion, la mise à jour ou la suppression des données.

SqlDataSourceStatusEventArgs

SqlDataSourceStatusEventHandler

L'exemple de code suivant montre comment afficher les données récupérées d'une base de données Microsoft SQL Server dans un contrôle DropDownList et mettre à jour l'enregistrement à l'aide d'un contrôle TextBox. L'exemple vous montre comment utiliser un objet DbTransaction pour ajouter le contexte de transaction lors de l'utilisation du contrôle SqlDataSource afin de mettre à jour des données.

<%@Page  Language="C#" %>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.Common" %>
<%@Import Namespace="System.Data.SqlClient" %>
<%@Import Namespace="System.Diagnostics" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">

 private void On_Click(Object source, EventArgs e) {    
    SqlDataSource1.Update();
 }

 private void OnSqlUpdating(Object source, SqlDataSourceCommandEventArgs e) {
    DbCommand command = e.Command;
    DbConnection cx  = command.Connection;    
    cx.Open();    
    DbTransaction tx = cx.BeginTransaction();
    command.Transaction = tx;
 }

 private void OnSqlUpdated(Object source, SqlDataSourceStatusEventArgs e) {
    DbCommand command = e.Command;
    DbTransaction tx = command.Transaction;
    
    // In this code example the OtherProcessSucceeded variable represents
    // the outcome of some other process that occurs whenever the data is 
    // updated, and must succeed for the data change to be committed. For 
    // simplicity, we set this value to true. 
    bool OtherProcessSucceeded = true;
    
    if (OtherProcessSucceeded) {
        tx.Commit();
        Label2.Text="The record was updated successfully!";
    }
    else {
        tx.Rollback();
        Label2.Text="The record was not updated.";
    }
 }

</SCRIPT>

<HTML>
  <BODY>
    <FORM runat="server">
      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT EmployeeID, LastName, Address FROM Employees"
          UpdateCommand="UPDATE Employees SET Address=@Address WHERE EmployeeID=@EmployeeID"
          OnUpdating="OnSqlUpdating"
          OnUpdated ="OnSqlUpdated">
          <UpdateParameters>
              <asp:ControlParameter Name="Address" ControlId="TextBox1" PropertyName="Text"/>
              <asp:ControlParameter Name="EmployeeID" ControlId="DropDownList1" PropertyName="SelectedValue"/>
          </UpdateParameters>
      </asp:SqlDataSource>

      <asp:DropDownList
          id="DropDownList1"
          runat="server"
          DataTextField="LastName"
          DataValueField="EmployeeID"
          DataSourceID="SqlDataSource1">
      </asp:DropDownList>

      <P>
      <asp:Label id="Label1" runat="server" Text="Enter a new address for the selected user." />
      <asp:TextBox id="TextBox1" runat="server" />
      <asp:Button id="Submit" runat="server" Text="Submit" OnClick="On_Click" />

      <P><asp:Label id="Label2" runat="server" Text="" />

    </FORM>
  </BODY>
</HTML>

<%@Page  Language="VJ#" %>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.Common" %>
<%@Import Namespace="System.Diagnostics" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">

     private void On_Click(Object source, System.EventArgs e)
    {
        try {
            SqlDataSource1.Update();
        }
        catch (System.Exception except) {
            // Handle Exception
        }
    
        Label2.set_Text("The record was updated successfully!");
    } //On_Click

    private void OnSqlUpdate(Object source, SqlDataSourceCommandEventArgs e)
    {
        // Log the command in the Event Log on the Web server.
        String logInfo = e.get_Command().get_CommandText() 
            + " is being submitted to the database.";
        
        IEnumerator ie = e.get_Command().get_Parameters().GetEnumerator();
        while (ie.MoveNext()) {
            DbParameter param = ((DbParameter)(ie.get_Current()));
            logInfo = logInfo + " " + param.get_ParameterName()+ "=" 
            + param.get_Value();
        }

        EventLog log = new EventLog();
        log.set_Log("Application");
        log.set_Source("ASP.NET Example");
        log.WriteEntry(logInfo);
    } //OnSqlUpdate    

</SCRIPT>

<HTML>
  <BODY>
    <FORM runat="server">
      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
          SelectCommand="SELECT EmployeeID, LastName, Address FROM Employees"
          UpdateCommand="UPDATE Employees SET Address=@Address WHERE EmployeeID=@EmployeeID"
          OnUpdating="OnSqlUpdate">
          <UpdateParameters>
              <asp:ControlParameter Name="Address" ControlId="TextBox1" PropertyName="Text"/>
              <asp:ControlParameter Name="EmployeeID" ControlId="DropDownList1" PropertyName="SelectedValue"/>
          </UpdateParameters>
      </asp:SqlDataSource>

      <asp:DropDownList
          id="DropDownList1"
          runat="server"
          DataTextField="LastName"
          DataValueField="EmployeeID"
          DataSourceID="SqlDataSource1">
      </asp:DropDownList>

      <P>
      <asp:Label id="Label1" runat="server" Text="Enter a new address for the selected user." />
      <asp:TextBox id="TextBox1" runat="server" />
      <asp:Button id="Submit" runat="server" Text="Submit" OnClick="On_Click" />

      <P><asp:Label id="Label2" runat="server" Text="" />

    </FORM>
  </BODY>
</HTML>

  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : LinkDemand ; valeur d'autorisation : Minimal
  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : InheritanceDemand ; valeur d'autorisation : Minimal

System.Object
   System.EventArgs
     System.ComponentModel.CancelEventArgs
      System.Web.UI.WebControls.SqlDataSourceCommandEventArgs
         System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0
Afficher: