Développer Réduire
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

ObjectDataSourceDisposingEventHandler, délégué

Remarque : ce délégué est nouveau dans le .NET Framework version 2.0.

Représente la méthode qui gérera l'événement ObjectDisposing du contrôle ObjectDataSource.

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

public delegate void ObjectDataSourceDisposingEventHandler (
	Object sender,
	ObjectDataSourceDisposingEventArgs e
)
/** @delegate */
public delegate void ObjectDataSourceDisposingEventHandler (
	Object sender, 
	ObjectDataSourceDisposingEventArgs e
)
JScript prend en charge l'utilisation de délégués mais pas la déclaration de nouveaux délégués.

Paramètres

sender

Source de l'événement, ObjectDataSource.

e

ObjectDataSourceDisposingEventArgs qui contient les données d'événement.

Lorsque vous créez un délégué ObjectDataSourceDisposingEventHandler, vous identifiez la méthode qui gérera l'événement. Pour associer l'événement au gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué. Pour plus d'informations sur les délégués de gestionnaires d'événements, consultez Consommation d'événements.

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 la classe ObjectDataSourceDisposingEventArgs a la valeur true pour indiquer à ObjectDataSource de ne pas appeler 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;
    }
  }
}

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
Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
© 2013 Microsoft. Tous droits réservés.