Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout

ObjectDataSourceMethodEventArgs, classe

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

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

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

public class ObjectDataSourceMethodEventArgs : CancelEventArgs
public class ObjectDataSourceMethodEventArgs extends CancelEventArgs
public class ObjectDataSourceMethodEventArgs extends CancelEventArgs

La classe ObjectDataSourceMethodEventArgs est utilisée dans les méthodes OnSelecting, OnUpdating, OnInserting et OnDeleting pour fournir l'accès aux paramètres d'entrée qui sont passés aux méthodes Select, Update, Delete et Insert du contrôle ObjectDataSource. Ces paramètres sont accessibles à l'aide de la propriété InputParameters. En ajoutant un délégué pour gérer l'événement Selecting, Updating, Inserting ou Deleting, vous pouvez examiner et manipuler les valeurs des paramètres et exécuter tout prétraitement supplémentaire nécessaire. Toute modification apportée aux paramètres de ce dictionnaire affectera le choix de la surcharge de méthode appelée pour l'opération. Lorsque la propriété DataObjectTypeName du contrôle ObjectDataSource est définie, vous pouvez uniquement modifier les propriétés d'objet de données pour les éléments de ce dictionnaire ; vous ne pouvez ajouter ni supprimer de paramètres. Pour plus d'informations, consultez Delete.

Le contrôle ObjectDataSource expose plusieurs événements que vous pouvez gérer pour utiliser l'objet métier sous-jacent à divers stades de son cycle de vie. Le tableau suivant répertorie les événements et les classes EventArgs et délégués de gestionnaires d'événements associés.

Événement

Classe EventArgs.

Délégué de EventHandler

ObjectCreating.

Se produit immédiatement avant la création de l'instance de l'objet métier.

ObjectDataSourceEventArgs

ObjectDataSourceObjectEventHandler

ObjectCreated.

Se produit immédiatement après la création de l'instance de l'objet métier.

ObjectDataSourceEventArgs

ObjectDataSourceObjectEventHandler

Selecting.

Se produit avant la récupération des données.

ObjectDataSourceSelectingEventArgs

ObjectDataSourceSelectingEventHandler

Inserting, Updating et Deleting.

Se produisent avant une opération d'insertion, de mise à jour ou de suppression.

ObjectDataSourceMethodEventArgs

ObjectDataSourceMethodEventHandler

Selected.

Se produit après la récupération des données.

ObjectDataSourceStatusEventArgs

ObjectDataSourceStatusEventHandler

Inserted, Updated et Deleted.

Se produisent une fois l'opération d'insertion, de mise à jour ou de suppression terminée.

ObjectDataSourceStatusEventArgs

ObjectDataSourceStatusEventHandler

ObjectDisposing.

Se produit avant la suppression d'un objet métier.

ObjectDataSourceDisposingEventArgs

ObjectDataSourceDisposingEventHandler

Cette section comprend deux exemples de code. Le premier exemple de code illustre comment utiliser un contrôle ObjectDataSource avec un objet métier et un contrôle DetailsView pour insérer des données. Le deuxième exemple de code fournit un exemple d'objet métier de couche intermédiaire utilisé dans le premier exemple de code.

L'exemple de code suivant illustre comment utiliser un contrôle ObjectDataSource avec un objet métier et un contrôle DetailsView pour insérer des données. DetailsView affiche initialement un nouvel enregistrement NorthwindEmployee ainsi qu'un bouton Insérer généré automatiquement. Après avoir entré les données dans les champs du contrôle DetailsView, cliquez sur le bouton Insérer, et la propriété InsertMethod identifiera la méthode qui exécute l'action Insert.

Dans cet exemple, la méthode UpdateEmployeeInfo est utilisée pour effectuer une insertion ; toutefois, il faut qu'un paramètre NorthwindEmployee insère les données. Pour cette raison, la collection de chaînes passée automatiquement par le contrôle DetailsView n'est pas suffisante. Le délégué NorthwindEmployeeInserting est un objet ObjectDataSourceMethodEventHandler qui gère l'événement Inserting et vous permet de manipuler les paramètres d'entrée avant les opérations de type Insert. Étant donné que la méthode UpdateEmployeeInfo requiert un objet NorthwindEmployee en tant que paramètre, la collection de chaînes en crée un qui est ensuite ajouté à la collection InputParameters.

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<Script runat="server">
private void NorthwindEmployeeInserting(object source, ObjectDataSourceMethodEventArgs e)
{
  // The business object expects a custom type. Build it
  // and add it to the parameters collection.
  
  IDictionary paramsFromPage = e.InputParameters;

  NorthwindEmployee ne = new NorthwindEmployee();

  ne.FirstName  = paramsFromPage["FirstName"].ToString();
  ne.LastName   = paramsFromPage["LastName"].ToString();
  ne.Title      = paramsFromPage["Title"].ToString();
  ne.Courtesy   = paramsFromPage["Courtesy"].ToString();
  ne.Supervisor = Int32.Parse(paramsFromPage["Supervisor"].ToString());

  paramsFromPage.Clear();
  paramsFromPage.Add("ne", ne);
}

</Script>
<html>
  <head>
    <title>ObjectDataSource - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          datasourceid="ObjectDataSource1">
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="UpdateEmployeeInfo"
          oninserting="NorthwindEmployeeInserting"
          typename="Samples.AspNet.CS.EmployeeLogic"
          >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
        </asp:objectdatasource>

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

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.JSL" Assembly="Samples.AspNet.JSL" %>
<%@ Import namespace="Samples.AspNet.JSL" %>
<%@ Page language="VJ#" %>
<Script runat="server">
private void NorthwindEmployeeInserting(Object source,
    ObjectDataSourceMethodEventArgs e)
{
    // The GridView control passes an array of strings in the parameters
    // collection because that is the type it knows how to work with.
    // However, the business object expects a custom type. Build it
    // and add it to the parameters collection.
    IDictionary paramsFromPage = e.get_InputParameters();

    NorthwindEmployee ne =  new NorthwindEmployee();
    ne.set_FirstName(paramsFromPage.get_Item("FirstName").ToString());
    ne.set_LastName (paramsFromPage.get_Item("LastName").ToString());
    ne.set_Title(paramsFromPage.get_Item("Title").ToString());
    ne.set_Courtesy(paramsFromPage.get_Item("Courtesy").ToString());
    ne.set_Supervisor(Int32.Parse(paramsFromPage.
        get_Item("Supervisor").ToString()));

    paramsFromPage.Clear();
    paramsFromPage.Add("ne", ne);
}

</Script>
<html>
  <head>
    <title>ObjectDataSource - VJ# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          datasourceid="ObjectDataSource1">
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="UpdateEmployeeInfo"
          oninserting="NorthwindEmployeeInserting"
          typename="Samples.AspNet.JSL.EmployeeLogic" >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
        </asp:objectdatasource>

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

L'exemple de code suivant fournit un exemple d'objet métier de couche intermédiaire utilisé par l'exemple de code précédent. La liste suivante décrit les deux classes principales qui sont définies dans l'exemple de code :

  • La classe EmployeeLogic, qui est une classe sans état qui encapsule la logique métier.

  • La classe NorthwindEmployee, qui est une classe modèle contenant uniquement les fonctionnalités de base qui sont requises pour charger et rendre persistantes des données de la couche de données.

Une classe NorthwindDataException supplémentaire est fournie dans un but pratique.

Cet ensemble d'exemples de classes utilise la base de données Northwind Traders qui est une base de données exemple disponible avec Microsoft SQL Server et Microsoft Access. Pour obtenir un exemple complet, utilisez ces classes en les plaçant dans le répertoire App_Code sous la racine de l'application ou en les compilant et plaçant la DLL résultante dans le répertoire Bin. La méthode UpdateEmployeeInfo n'est pas complètement implémentée ; vous ne pourrez donc pas insérer des données avec cet exemple dans la base de données Northwind Traders.

namespace Samples.AspNet.CS {

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
  //
  // EmployeeLogic is a stateless business object that encapsulates
  // the operations you can perform on a NorthwindEmployee object.
  //
  public class EmployeeLogic {

    // Returns a collection of NorthwindEmployee objects.
    public static ICollection GetAllEmployees () {
      ArrayList al = new ArrayList();

      ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"];

      SqlDataSource sds
        = new SqlDataSource(cts.ConnectionString,
                            "SELECT EmployeeID FROM Employees");
      try {
        IEnumerable IDs = sds.Select(DataSourceSelectArguments.Empty);

        // Iterate through the Enumeration and create a
        // NorthwindEmployee object for each ID.
        IEnumerator enumerator = IDs.GetEnumerator();
        while (enumerator.MoveNext()) {
          // The IEnumerable contains DataRowView objects.
          DataRowView row = enumerator.Current as DataRowView;
          string id = row["EmployeeID"].ToString();
          NorthwindEmployee nwe = new NorthwindEmployee(id);
          // Add the NorthwindEmployee object to the collection.
          al.Add(nwe);
        }
      }
      finally {
        // If anything strange happens, clean up.
        sds.Dispose();
      }

      return al;
    }

    public static NorthwindEmployee GetEmployee(object anID) {
      if (anID.Equals("-1") ||
          anID.Equals(DBNull.Value) ) {
        return new NorthwindEmployee();
      }
      else {
        return new NorthwindEmployee(anID);
      }
    }

    public static void UpdateEmployeeInfo(NorthwindEmployee ne) {
      bool retval = ne.Save();
      if (! retval) { throw new NorthwindDataException("UpdateEmployee failed."); }
    }

    public static void DeleteEmployee(NorthwindEmployee ne) {
      bool retval = ne.Delete();
      if (! retval) { throw new NorthwindDataException("DeleteEmployee failed."); }
    }

    // And so on...
  }

  public class NorthwindEmployee {

    public NorthwindEmployee () {
      ID = DBNull.Value;
      lastName = "";
      firstName = "";
      title="";
      titleOfCourtesy = "";
      reportsTo = -1;
    }

    public NorthwindEmployee (object anID) {
      this.ID = anID;

      SqlConnection conn
        = new SqlConnection (ConfigurationManager.ConnectionStrings["NorthwindConnection"].ConnectionString);
      SqlCommand sc =
        new SqlCommand(" SELECT FirstName,LastName,Title,TitleOfCourtesy,ReportsTo " +
                       " FROM Employees " +
                       " WHERE EmployeeID = @empId",
                       conn);
      // Add the employee ID parameter and set its value.
      sc.Parameters.Add(new SqlParameter("@empId",SqlDbType.Int)).Value = Int32.Parse(anID.ToString());
      SqlDataReader sdr = null;

      try {
        conn.Open();
        sdr = sc.ExecuteReader();

        // Only loop once.
        if (sdr != null && sdr.Read()) {
          // The IEnumerable contains DataRowView objects.
          this.firstName        = sdr["FirstName"].ToString();
          this.lastName         = sdr["LastName"].ToString();
          this.title            = sdr["Title"].ToString();
          this.titleOfCourtesy  = sdr["TitleOfCourtesy"].ToString();
          if (! sdr.IsDBNull(4)) {
            this.reportsTo        = sdr.GetInt32(4);
          }
        }
        else {
          throw new NorthwindDataException("Data not loaded for employee id.");
        }
      }
      finally {
        try {
          if (sdr != null) sdr.Close();
          conn.Close();
        }
        catch (SqlException) {
          // Log an event in the Application Event Log.
          throw;
        }
      }
    }

    private object ID;
    public string EmpID {
      get { return ID.ToString();  }
    }

    private string lastName;
    public string LastName {
      get { return lastName; }
      set { lastName = value; }
    }

    private string firstName;
    public string FirstName {
      get { return firstName; }
      set { firstName = value;  }
    }

    public string FullName {
      get { return FirstName + " " + LastName; }
    }

    private string title;
    public String Title {
      get { return title; }
      set { title = value; }
    }

    private string titleOfCourtesy;
    public string Courtesy {
      get { return titleOfCourtesy; }
      set { titleOfCourtesy = value; }
    }

    private int    reportsTo;
    public int Supervisor {
      get { return reportsTo; }
      set { reportsTo = value; }
    }

    public bool Save () {
      // Implement persistence logic.
      return true;
    }

    public bool Delete () {
      // Implement delete logic.
      return true;
    }
  }

  internal class NorthwindDataException: Exception {
    public NorthwindDataException(string msg) : base (msg) { }
  }
}

package  Samples.AspNet.JSL;

import System.*;
import System.Collections.*;
import System.Configuration.*;
import System.Data.*;
import System.Data.SqlClient.*;
import System.Web.UI.*;
import System.Web.UI.WebControls.*;
   
//
// EmployeeLogic is a stateless business object that encapsulates
// the operations you can perform on a NorthwindEmployee object.
//
public class EmployeeLogic
{    
    // Returns a collection of NorthwindEmployee objects.
    public static ICollection GetAllEmployees() throws
        NorthwindDataException, SqlException
    {
        ArrayList al =  new ArrayList();

		ConnectionStringSettings cts = 
			ConfigurationManager.get_ConnectionStrings().
			get_Item("NorthwindConnection");
			//ConfigurationSettings.get_ConnectionStrings().get_Item("NorthwindConnection");

        SqlDataSource sds = new SqlDataSource(cts.get_ConnectionString(),
            "SELECT EmployeeID FROM Employees");
        try { 
            IEnumerable ids = sds.Select(DataSourceSelectArguments.get_Empty());
            
            // Iterate through the Enumeration and create a
            // NorthwindEmployee object for each id.
            IEnumerator enumerator = ids.GetEnumerator();
            while(enumerator.MoveNext()) {
                // The IEnumerable contains DataRowView objects.
                DataRowView row = (DataRowView) enumerator.get_Current();
                String id = row.get_Item("EmployeeID").ToString();
                NorthwindEmployee nwe =  new NorthwindEmployee(id);
                // Add the NorthwindEmployee object to the collection.
                al.Add(nwe);
            }
        }
        finally {
            // If anything strange happens, clean up.
            sds.Dispose();
        }
        return al;
    } //GetAllEmployees

    public static NorthwindEmployee GetEmployee(Object anId) throws 
        NorthwindDataException, SqlException
    {
        if (anId.Equals("-1") || anId.Equals(DBNull.Value)) {
            return new NorthwindEmployee();
        }
        else {
            return new NorthwindEmployee(anId);
        }
    } //GetEmployee

    public static void UpdateEmployeeInfo(NorthwindEmployee ne) throws 
        NorthwindDataException
    {
        boolean retval = ne.Save();
        if (!retval) {
            throw new NorthwindDataException("UpdateEmployee failed.");
        }
    } //UpdateEmployeeInfo

    public static void DeleteEmployee(NorthwindEmployee ne) throws 
        NorthwindDataException
    {
        boolean retval = ne.Delete();
        if (!retval) {
            throw new NorthwindDataException("DeleteEmployee failed.");
        }
    } //DeleteEmployee

    // And so on...
} //EmployeeLogic
   
public class NorthwindEmployee 
{
    public NorthwindEmployee() 
    {
        id = DBNull.Value;
        lastName = "";
        firstName = "";
        title = "";
        titleOfCourtesy = "";
        reportsTo =-1;
    } //NorthwindEmployee

    public NorthwindEmployee(Object anId) throws 
        NorthwindDataException ,SqlException
    {
        this.id = anId;
			

		SqlConnection conn = new SqlConnection(ConfigurationManager.
			get_ConnectionStrings().get_Item("NorthwindConnection").get_ConnectionString());
         SqlCommand sc =  new SqlCommand(
            " SELECT FirstName,LastName,Title,TitleOfCourtesy,ReportsTo " 
            + " FROM Employees WHERE EmployeeID = @empId", conn);
         // Add the employee id parameter and set its value.
         sc.get_Parameters().Add(new SqlParameter("@empId", SqlDbType.Int)).
             set_Value(anId.ToString());
         SqlDataReader sdr = null;
         
         try {
            conn.Open();
            sdr = sc.ExecuteReader();
            // Only loop once.
            if (sdr  != null && sdr.Read()) {
                // The IEnumerable contains DataRowView objects.
                this.firstName = sdr.get_Item( "FirstName").ToString();
                this.lastName = sdr.get_Item( "LastName").ToString();
                this.title = sdr.get_Item( "Title").ToString();
                this.titleOfCourtesy = sdr.get_Item( "TitleOfCourtesy").
                    ToString();
                if (!(sdr.IsDBNull(4))) {
                    this.reportsTo = sdr.GetInt32(4);
                }
            }
            else {
                throw new NorthwindDataException(
                    "Data not loaded for employee id.");
            }
        }
        finally {
            try {
                if (sdr != null) {
                    sdr.Close();
                }
                conn.Close();
            }
            catch(SqlException exp){   
            // Log an event in the Application Event Log.
            throw exp;
            }
        }
    } //NorthwindEmployee
      
    private Object id;
     
    /** @property 
     */
    public String get_EmpID()
    {
        return id.ToString();
    } //get_EmpID

    private String lastName;
      
      /** @property 
       */
    public String get_LastName()
    {
        return lastName;
    } //get_LastName

    /** @property 
     */
    public void set_LastName (String value)
    {
        lastName = value;
    } //set_LastName

    private String firstName;
      
    /** @property 
     */
    public String get_FirstName()
    {
        return firstName;
    } //get_FirstName

    /** @property 
     */
    public void set_FirstName (String value)
    {
        firstName = value;
    } //set_FirstName 

    /** @property 
     */
    public String get_FullName()
    {
        return get_FirstName() + " " + get_LastName();
    } //get_FullName

    private String title;
      
    /** @property 
     */
    public String get_Title()
    {
        return title;
    } //get_Title

    /** @property 
     */
    public void set_Title (String value)
    {
        title = value;
    } //set_Title 

    private String titleOfCourtesy;
      
    /** @property 
     */
    public String get_Courtesy()
    {
        return titleOfCourtesy;
    } //get_Courtesy

    /** @property 
     */
    public void set_Courtesy (String value)
    {
        titleOfCourtesy = value;
    } //set_Courtesy 

    private int reportsTo;
      
    /** @property 
     */
    public int get_Supervisor()
    {
        return reportsTo;
    }//get_Supervisor

    /** @property 
     */
    public void set_Supervisor (int value)
    {
        reportsTo = value;
    } //set_Supervisor 

    public boolean Save() 
    {
        // Implement persistence logic.
        return true;
    } //Save
      
    public boolean Delete() 
    {
        // Implement delete logic.
        return true;
    } //Delete
} //NorthwindEmployee

public class NorthwindDataException extends System.Exception
{
    public NorthwindDataException(String msg)
    {
         super(msg);
    } //NorthwindDataException
} //NorthwindDataException

  • 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.ObjectDataSourceMethodEventArgs
         System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs

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

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2015 Microsoft