Questa documentazione è stata archiviata e non viene gestita.

Classe SqlDataSourceCommandEventArgs

Fornisce i dati per gli eventi Updating, Deleting e Inserting del controllo SqlDataSource.

Spazio dei nomi: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)

public class SqlDataSourceCommandEventArgs : CancelEventArgs
public class SqlDataSourceCommandEventArgs extends CancelEventArgs
public class SqlDataSourceCommandEventArgs extends CancelEventArgs
Non applicabile.

Con l'aggiunta di un delegato del gestore eventi per gestire l'evento Updating, Inserting o Deleting, è possibile eseguire eventuali pre-elaborazioni richieste o annullare completamente il comando di database.

Poiché la classe SqlDataSourceCommandEventArgs deriva dalla classe CancelEventArgs, è possibile annullare un comando di database SqlDataSource in sospeso impostando la proprietà Cancel su true. È possibile esaminare e manipolare l'insieme CommandText, Parameters e le altre proprietà delle query del database prima di eseguire il comando tramite l'accesso all'oggetto DbCommand esposto dalla proprietà Command.

La classe SqlDataSourceCommandEventArgs viene utilizzata nei metodi OnUpdating, OnInserting e OnDeleting per fornire l'accesso a un comando di database dell'oggetto SqlDataSource prima della sua esecuzione. Il controllo SqlDataSource espone numerosi eventi che è possibile gestire per utilizzare gli oggetti dati sottostanti nel corso di un'operazione sui dati. Nella tabella riportata di seguito sono elencati gli eventi e le classi EventArgs e del gestore eventi associate come indicazione per i vari eventi corrispondenti al ciclo di vita di un'operazione sui dati svolta con il controllo SqlDataSource.

Evento

EventArgs

EventHandler

L'evento Selecting si verifica prima del recupero dei dati.

SqlDataSourceSelectingEventArgs

SqlDataSourceSelectingEventHandler

Gli eventi Inserting, Updating, Deleting si verificano prima dell'esecuzione di un'operazione di inserimento, aggiornamento o eliminazione.

SqlDataSourceCommandEventArgs

SqlDataSourceCommandEventHandler

Gli eventi Selected, Inserted, Updated, Deleted si verificano dopo il completamento dell'operazione di recupero, inserimento, aggiornamento o eliminazione.

SqlDataSourceStatusEventArgs

SqlDataSourceStatusEventHandler

Nell'esempio di codice riportato di seguito viene illustrato come visualizzare i dati recuperati da un database Microsoft SQL Server in un controllo DropDownList e come aggiornare il record utilizzando un controllo TextBox. Nell'esempio viene illustrato come utilizzare un oggetto DbTransaction per aggiungere contesto di transazione quando si utilizza il controllo SqlDataSource per aggiornare i dati.

<%@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 xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" 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>

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

      <br /><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 xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" 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>

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

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

    </form>
  </body>
</html>

  • AspNetHostingPermission  per operare in un ambiente host. Valore richiesta: LinkDemand. Valore autorizzazione: Minimal.
  • AspNetHostingPermission  per operare in un ambiente host. Valore richiesta: InheritanceDemand. Valore autorizzazione: Minimal.

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

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 è supportato in Windows Vista, Microsoft Windows XP SP2 e Windows Server 2003 SP1.

.NET Framework

Supportato in:
Mostra: