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

ObjectDataSourceDisposingEventArgs, classe

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

Fournit des données pour l'événement ObjectDisposing du contrôle ObjectDataSource.

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

public class ObjectDataSourceDisposingEventArgs : CancelEventArgs
public class ObjectDataSourceDisposingEventArgs extends CancelEventArgs
public class ObjectDataSourceDisposingEventArgs extends CancelEventArgs

La classe ObjectDataSourceDisposingEventArgs est utilisée dans la méthode OnObjectDisposing pour fournir l'accès à l'instance d'objet métier après toute opération de données qui utilise le contrôle ObjectDataSource et l'objet métier, mais avant la destruction de l'objet métier. L'objet métier est accessible à l'aide de la propriété ObjectInstance. En ajoutant un délégué pour gérer l'événement ObjectDisposing, vous pouvez accéder à tous membres exposés publiquement de l'objet métier pour exécuter tout travail ou nettoyage final.

La méthode OnObjectDisposing n'est pas appelée par le contrôle ObjectDataSource, si la méthode qui exécute des opérations de données est une méthode static. Aucune instance d'objet métier n'est créée lorsque la méthode est statique.

Le contrôle ObjectDataSource expose de nombreux é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

EventArgs

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 après l'opération d'insertion, de mise à jour ou de suppression.

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 montre comment utiliser un contrôle ObjectDataSource avec un objet métier et un contrôle GridView pour afficher des informations. Le deuxième exemple de code fournit un exemple d'objet métier de couche intermédiaire utilisé par le premier exemple de code.

L'exemple de code suivant montre comment utiliser un contrôle ObjectDataSource avec un objet métier et un contrôle GridView pour afficher des informations. Vous pouvez travailler avec un objet métier qui est très coûteux (en termes de temps ou de ressources) à créer pour chaque opération de données effectuée par votre page Web. Une façon de travailler avec un objet coûteux consiste à en créer une instance une fois, puis à la mettre en cache pour les opérations suivantes plutôt que de la créer et de la détruire à chaque opération de données. Cet exemple illustre ce modèle. Vous pouvez gérer l'événement ObjectCreating de façon à vérifier d'abord la présence d'un objet dans le cache et le créer uniquement s'il ne s'y trouve pas déjà. Gérez ensuite l'événement ObjectDisposing pour mettre en cache l'objet métier en vue d'une utilisation ultérieure au lieu de le détruire. Dans cet exemple, la propriété CancelEventArgs.Cancel de ObjectDataSourceDisposingEventArgs a la valeur true pour indiquer à ObjectDataSource de ne pas appeler la méthode Dispose sur l'instance.

<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<Script runat="server">

// Instead of creating and destroying the business object each time, the 
// business object is cached in the ASP.NET Cache.
private void GetEmployeeLogic(object sender, ObjectDataSourceEventArgs e)
{
    // First check to see if an instance of this object already exists in the Cache.
    EmployeeLogic cachedLogic;
    
    cachedLogic = Cache["ExpensiveEmployeeLogicObject"] as EmployeeLogic;
    
    if (null == cachedLogic) {
            cachedLogic = new EmployeeLogic();            
    }
        
    e.ObjectInstance = cachedLogic;     
}

private void ReturnEmployeeLogic(object sender, ObjectDataSourceDisposingEventArgs e)
{    
    // Get the instance of the business object that the ObjectDataSource is working with.
    EmployeeLogic cachedLogic = e.ObjectInstance as EmployeeLogic;        
    
    // Test to determine whether the object already exists in the cache.
    EmployeeLogic temp = Cache["ExpensiveEmployeeLogicObject"] as EmployeeLogic;
    
    if (null == temp) {
        // If it does not yet exist in the Cache, add it.
        Cache.Insert("ExpensiveEmployeeLogicObject", cachedLogic);
    }
    
    // Cancel the event, so that the object will 
    // not be Disposed if it implements IDisposable.
    e.Cancel = true;
}
</Script>

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

        <asp:gridview
          id="GridView1"
          runat="server"          
          datasourceid="ObjectDataSource1">
        </asp:gridview>

        <asp:objectdatasource 
          id="ObjectDataSource1"
          runat="server"          
          selectmethod="GetCreateTime"          
          typename="Samples.AspNet.CS.EmployeeLogic"
          onobjectcreating="GetEmployeeLogic"
          onobjectdisposing="ReturnEmployeeLogic" >
        </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. L'exemple de code se compose d'un objet métier de base, défini par la classe EmployeeLogic, qui est une classe qui conserve l'état et encapsule la logique métier. Pour obtenir un exemple complet, vous devez compiler ce code comme une bibliothèque, puis utilisez ces classes à partir d'une page ASP.

namespace Samples.AspNet.CS {

using System;
using System.Collections;
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 {

    public EmployeeLogic () : this(DateTime.Now) {        
    }
    
    public EmployeeLogic (DateTime creationTime) { 
        _creationTime = creationTime;
    }

    private DateTime _creationTime;
    
    // Returns a collection of NorthwindEmployee objects.
    public ICollection GetCreateTime () {
      ArrayList al = new ArrayList();
      
      // Returns creation time for this example.      
      al.Add("The business object that you are using was created at " + _creationTime);
      
      return al;
    }
  }
}

  • 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.ObjectDataSourceDisposingEventArgs

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: