Partager via


ObjectDataSourceDisposingEventArgs Classe

Définition

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

public ref class ObjectDataSourceDisposingEventArgs : System::ComponentModel::CancelEventArgs
public class ObjectDataSourceDisposingEventArgs : System.ComponentModel.CancelEventArgs
type ObjectDataSourceDisposingEventArgs = class
    inherit CancelEventArgs
Public Class ObjectDataSourceDisposingEventArgs
Inherits CancelEventArgs
Héritage
ObjectDataSourceDisposingEventArgs

Exemples

Cette section contient deux exemples de code. Le premier exemple de code montre comment utiliser un ObjectDataSource contrôle avec un objet métier et un GridView contrôle pour afficher des informations. Le deuxième exemple de code fournit l’exemple d’objet métier de niveau intermédiaire utilisé par le premier exemple de code.

L’exemple de code suivant montre comment utiliser un ObjectDataSource contrôle avec un objet métier et un GridView contrôle pour afficher des informations. Vous pouvez utiliser un objet métier 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 peut être de créer une instance de celui-ci une fois, puis de le mettre en cache pour les opérations suivantes au lieu de le créer et de le détruire pour chaque opération de données. Cet exemple illustre ce modèle. Vous pouvez gérer l’événement ObjectCreating pour case activée le cache d’un objet, puis créer un instance, uniquement si un objet n’est pas déjà mis en cache. Ensuite, gérez 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 CancelEventArgs.Cancel propriété de l’objet ObjectDataSourceDisposingEventArgs est définie truesur , pour indiquer à l’objet ObjectDataSource de ne pas appeler la Dispose méthode sur le instance.

<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 xmlns="http://www.w3.org/1999/xhtml" >
  <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>
<%@ Import namespace="Samples.AspNet.VB" %>
<%@ Page language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

' Instead of creating and destroying the business object each time, the 
' business object is cached in the ASP.NET Cache.
Sub GetEmployeeLogic(sender As Object, e As ObjectDataSourceEventArgs)

    ' First check to see if an instance of this object already exists in the Cache.
    Dim cachedLogic As EmployeeLogic 
    
    cachedLogic = CType( Cache("ExpensiveEmployeeLogicObject"), EmployeeLogic)
    
    If (cachedLogic Is Nothing) Then
            cachedLogic = New EmployeeLogic            
    End If
        
    e.ObjectInstance = cachedLogic
    
End Sub ' GetEmployeeLogic

Sub ReturnEmployeeLogic(sender As Object, e As ObjectDataSourceDisposingEventArgs)
    
    ' Get the instance of the business object that the ObjectDataSource is working with.
    Dim cachedLogic  As EmployeeLogic  
    cachedLogic = CType( e.ObjectInstance, EmployeeLogic)
    
    ' Test to determine whether the object already exists in the cache.
    Dim temp As EmployeeLogic 
    temp = CType( Cache("ExpensiveEmployeeLogicObject"), EmployeeLogic)
    
    If (temp Is Nothing) Then
        ' If it does not yet exist in the Cache, add it.
        Cache.Insert("ExpensiveEmployeeLogicObject", cachedLogic)
    End If
    
    ' Cancel the event, so that the object will 
    ' not be Disposed if it implements IDisposable.
    e.Cancel = True
End Sub ' ReturnEmployeeLogic
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - VB 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.VB.EmployeeLogic"
          onobjectcreating="GetEmployeeLogic"
          onobjectdisposing="ReturnEmployeeLogic" >
        </asp:objectdatasource>        

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

L’exemple de code suivant fournit un exemple d’objet métier de niveau intermédiaire que l’exemple de code précédent utilise. L’exemple de code se compose d’un objet métier de base, défini par la EmployeeLogic classe , qui est une classe qui maintient l’état et encapsule la logique métier. Pour obtenir un exemple de travail complet, vous devez compiler ce code en tant que bibliothèque, puis utiliser 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;
    }
  }
}
Imports System.Collections
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace Samples.AspNet.VB

  Public Class EmployeeLogic
    
    
    Public Sub New() 
        MyClass.New(DateTime.Now)
    
    End Sub
    
    
    Public Sub New(ByVal creationTime As DateTime) 
        _creationTime = creationTime
    
    End Sub
    
    Private _creationTime As DateTime
    
    
    ' Returns a collection of NorthwindEmployee objects.
    Public Function GetCreateTime() As ICollection 
        Dim al As New ArrayList()
        
        ' Returns creation time for this example.      
        al.Add("The business object that you are using was created at " + _creationTime)
        
        Return al
    
    End Function 'GetCreateTime
  End Class
End Namespace ' Samples.AspNet.VB

Remarques

La ObjectDataSourceDisposingEventArgs classe est utilisée dans la OnObjectDisposing méthode pour fournir l’accès à l’objet métier instance après l’exécution des opérations de données qui utilisent le ObjectDataSource contrôle et l’objet métier, mais avant la destruction de l’objet métier. L’objet métier est accessible à l’aide de la ObjectInstance propriété . En ajoutant un délégué pour gérer l’événementObjectDisposing, vous pouvez accéder à tous les membres exposés publiquement de l’objet métier pour effectuer tout travail final ou propre.

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

Le ObjectDataSource contrôle expose de nombreux événements que vous pouvez gérer pour travailler avec l’objet métier sous-jacent à différents moments de son cycle de vie. Le tableau suivant répertorie les événements et les classes et délégués de gestionnaires d’événements associés EventArgs .

Événement EventArgs EventHandler
ObjectCreating.

Se produit immédiatement avant la création de la 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, Updatinget Deleting.

Se produit avant l’exécution d’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, Updatedet Deleted.

Se produit une fois l’opération d’insertion, de mise à jour ou de suppression terminée.
ObjectDataSourceStatusEventArgs ObjectDataSourceStatusEventHandler
ObjectDisposing.

Se produit avant la destruction d’un objet métier.
ObjectDataSourceDisposingEventArgs ObjectDataSourceDisposingEventHandler

Constructeurs

ObjectDataSourceDisposingEventArgs(Object)

Initialise une nouvelle instance de la classe ObjectDataSourceDisposingEventArgs à l'aide de l'objet spécifié.

Propriétés

Cancel

Obtient ou définit une valeur indiquant si l'événement doit être annulé.

(Hérité de CancelEventArgs)
ObjectInstance

Obtient un objet qui représente l'objet métier avec lequel le contrôle ObjectDataSource exécute des opérations de données.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Voir aussi