Ler en inglés

Compartir por


ObjectDataSourceDisposingEventArgs Clase

Definición

Proporciona datos para el evento ObjectDisposing del control ObjectDataSource.

C#
public class ObjectDataSourceDisposingEventArgs : System.ComponentModel.CancelEventArgs
Herencia
ObjectDataSourceDisposingEventArgs

Ejemplos

Esta sección contiene dos ejemplos de código. En el primer ejemplo de código se muestra cómo usar un ObjectDataSource control con un objeto de negocio y un GridView control para mostrar información. En el segundo ejemplo de código se proporciona el objeto de negocio de nivel intermedio de ejemplo que usa el primer ejemplo de código.

En el ejemplo de código siguiente se muestra cómo usar un ObjectDataSource control con un objeto de negocio y un GridView control para mostrar información. Es posible que trabaje con un objeto de negocio que sea muy costoso (en términos de tiempo o recursos) para crear para cada operación de datos que realice la página web. Una manera de trabajar con un objeto costoso podría ser crear una instancia de ella una vez y, a continuación, almacenarla en caché para las operaciones posteriores en lugar de crearla y destruirla para cada operación de datos. En este ejemplo se muestra este patrón. Puede controlar el ObjectCreating evento para comprobar primero la memoria caché de un objeto y, a continuación, crear una instancia, solo si aún no está almacenada en caché. A continuación, controle el ObjectDisposing evento para almacenar en caché el objeto de negocio para su uso futuro, en lugar de destruirlo. En este ejemplo, la CancelEventArgs.Cancel propiedad del ObjectDataSourceDisposingEventArgs objeto se establece trueen , para dirigir a ObjectDataSource que no llame al Dispose método en la instancia de .

ASP.NET (C#)
<%@ 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>

En el ejemplo de código siguiente se proporciona un objeto de negocio de nivel intermedio de ejemplo que usa el ejemplo de código anterior. El ejemplo de código consta de un objeto de negocio básico, definido por la EmployeeLogic clase , que es una clase que mantiene el estado y encapsula la lógica de negocios. Para obtener un ejemplo funcional completo, debe compilar este código como una biblioteca y, a continuación, usar estas clases desde una página ASP.

C#
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;
    }
  }
}

Comentarios

La ObjectDataSourceDisposingEventArgs clase se usa en el OnObjectDisposing método para proporcionar acceso a la instancia de objeto de negocio después de realizar cualquier operación de datos que use el control y el ObjectDataSource objeto de negocio, pero antes de que se destruya el objeto de negocio. Se tiene acceso al objeto de negocio mediante la ObjectInstance propiedad . Al agregar un delegado para controlar el ObjectDisposing evento, puede acceder a los miembros expuestos públicamente del objeto de negocio para realizar cualquier trabajo final o limpiarlo.

El OnObjectDisposing control no llama al ObjectDataSource método si el método que realiza operaciones de datos es un static método . No se crea ninguna instancia de objeto de negocio cuando el método es estático.

El ObjectDataSource control expone muchos eventos que puede controlar para trabajar con el objeto de negocio subyacente en varias ocasiones en su ciclo de vida. En la tabla siguiente se enumeran los eventos y las clases asociadas EventArgs y los delegados del controlador de eventos.

evento EventArgs EventHandler
ObjectCreating.

Se produce inmediatamente antes de crear la instancia del objeto de negocio.
ObjectDataSourceEventArgs ObjectDataSourceObjectEventHandler
ObjectCreated.

Se produce inmediatamente después de crear la instancia del objeto de negocio.
ObjectDataSourceEventArgs ObjectDataSourceObjectEventHandler
Selecting.

Se produce antes de recuperar los datos.
ObjectDataSourceSelectingEventArgs ObjectDataSourceSelectingEventHandler
Inserting, Updatingy Deleting.

Se produce antes de realizar una operación de inserción, actualización o eliminación.
ObjectDataSourceMethodEventArgs ObjectDataSourceMethodEventHandler
Selected

Se produce después de recuperar los datos.
ObjectDataSourceStatusEventArgs ObjectDataSourceStatusEventHandler
Inserted, Updatedy Deleted.

Se produce una vez completada la operación de inserción, actualización o eliminación.
ObjectDataSourceStatusEventArgs ObjectDataSourceStatusEventHandler
ObjectDisposing.

Se produce antes de que se destruya un objeto de negocio.
ObjectDataSourceDisposingEventArgs ObjectDataSourceDisposingEventHandler

Constructores

ObjectDataSourceDisposingEventArgs(Object)

Inicializa una nueva instancia de la clase ObjectDataSourceDisposingEventArgs usando el objeto especificado.

Propiedades

Cancel

Obtiene o establece un valor que indica si se debe cancelar el evento.

(Heredado de CancelEventArgs)
ObjectInstance

Obtiene un objeto que representa el objeto comercial con el que realiza operaciones de datos el control ObjectDataSource.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Produto Versións
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Consulte también