ObjectDataSourceDisposingEventArgs Clase

Definición

Proporciona datos para el evento ObjectDisposing del control ObjectDataSource.Provides data for the ObjectDisposing event of the ObjectDataSource control.

public ref class ObjectDataSourceDisposingEventArgs : System::ComponentModel::CancelEventArgs
public class ObjectDataSourceDisposingEventArgs : System.ComponentModel.CancelEventArgs
type ObjectDataSourceDisposingEventArgs = class
    inherit CancelEventArgs
Public Class ObjectDataSourceDisposingEventArgs
Inherits CancelEventArgs
Herencia
ObjectDataSourceDisposingEventArgs

Ejemplos

Esta sección contiene dos ejemplos de código.This section contains two code examples. En el primer ejemplo de código se muestra cómo ObjectDataSource usar un control con un objeto comercial GridView y un control para mostrar información.The first code example demonstrates how to use an ObjectDataSource control with a business object and a GridView control to display information. En el segundo ejemplo de código se proporciona el objeto comercial de nivel intermedio de ejemplo que usa el primer ejemplo de código.The second code example provides the example middle-tier business object that the first code example uses.

En el ejemplo de código siguiente se muestra cómo ObjectDataSource usar un control con un objeto comercial GridView y un control para mostrar información.The following code example demonstrates how to use an ObjectDataSource control with a business object and a GridView control to display information. Puede trabajar con un objeto comercial que es muy caro (en términos de tiempo o recursos) de crear para cada operación de datos que realiza la Página Web.You might work with a business object that is very expensive (in terms of time or resources) to create for every data operation that your Web page performs. Una manera de trabajar con un objeto caro podría ser crear una instancia de él una vez y almacenarlo en caché para las operaciones posteriores en lugar de crearlo y destruirlo para cada operación de datos.One way to work with an expensive object might be to create an instance of it once, and then cache it for subsequent operations instead of creating and destroying it for every data operation. Este ejemplo muestra este patrón.This example demonstrates this pattern. Puede controlar el ObjectCreating evento para buscar primero un objeto en la memoria caché y, a continuación, crear una instancia, solo si aún no se ha almacenado en la memoria caché.You can handle the ObjectCreating event to check the cache for an object first, and then create an instance, only if one is not already cached. A continuación, controle el ObjectDisposing evento para almacenar en caché el objeto comercial para su uso futuro, en lugar de destruirlo.Then, handle the ObjectDisposing event to cache the business object for future use, instead of destroying it. En este ejemplo, la CancelEventArgs.Cancel propiedad ObjectDataSourceDisposingEventArgs del objeto se establece ObjectDataSource en para trueindicar a que no llame Dispose al método en la instancia.In this example, the CancelEventArgs.Cancel property of the ObjectDataSourceDisposingEventArgs object is set to true, to direct the ObjectDataSource to not call the Dispose method on the 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>

En el ejemplo de código siguiente se proporciona un ejemplo de objeto comercial de nivel intermedio que utiliza el ejemplo de código anterior.The following code example provides an example middle-tier business object that the preceding code example uses. El ejemplo de código consta de un objeto comercial básico, definido por EmployeeLogic la clase, que es una clase que mantiene el estado y encapsula la lógica de negocios.The code example consists of a basic business object, defined by the EmployeeLogic class, which is a class that maintains state and encapsulates business logic. Para obtener un ejemplo de trabajo completo, debe compilar este código como una biblioteca y, a continuación, utilizar estas clases desde una página ASP.For a complete working example, you must compile this code as a library, and then use these classes from an ASP page.

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

Comentarios

La ObjectDataSourceDisposingEventArgs clase se utiliza en el OnObjectDisposing método para proporcionar acceso a la instancia de objeto comercial después de que se realicen las ObjectDataSource operaciones de datos que usan el control y el objeto comercial, pero antes de que se destruya el objeto comercial.The ObjectDataSourceDisposingEventArgs class is used in the OnObjectDisposing method to provide access to the business object instance after any data operations that are using the ObjectDataSource control and business object are performed, but before the business object is destroyed. Se tiene acceso al objeto comercial mediante la ObjectInstance propiedad.The business object is accessed using the ObjectInstance property. Al agregar un delegado para controlar el ObjectDisposing evento, puede tener acceso a cualquier miembro expuesto públicamente del objeto comercial para realizar cualquier trabajo final o limpieza.By adding a delegate to handle the ObjectDisposing event, you can access any publicly exposed members of the business object to perform any final work or clean up.

El OnObjectDisposing ObjectDataSource control no llama al método, si el método que realiza las operaciones de datos es un static método.The OnObjectDisposing method is not called by the ObjectDataSource control, if the method that performs data operations is a static method. No se crea ninguna instancia de objeto comercial cuando el método es estático.No business object instance is created when the method is static.

El ObjectDataSource control expone muchos eventos que se pueden controlar para trabajar con el objeto comercial subyacente en varias ocasiones en su ciclo de vida.The ObjectDataSource control exposes many events that you can handle to work with the underlying business object at various times in its lifecycle. En la tabla siguiente se enumeran los eventos EventArgs y las clases asociadas y los delegados de controlador de eventos.The following table lists the events and the associated EventArgs classes and event handler delegates.

eventoEvent EventArgsEventArgs EventHandlerEventHandler
ObjectCreating.ObjectCreating.

Se produce inmediatamente antes de que se cree la instancia del objeto comercial.Occurs immediately before the instance of the business object is created.
ObjectDataSourceEventArgs ObjectDataSourceObjectEventHandler
ObjectCreated.ObjectCreated.

Se produce inmediatamente después de que se cree la instancia del objeto comercial.Occurs immediately after the instance of the business object is created.
ObjectDataSourceEventArgs ObjectDataSourceObjectEventHandler
Selecting.Selecting.

Se produce antes de que se recuperen los datos.Occurs before the data is retrieved.
ObjectDataSourceSelectingEventArgs ObjectDataSourceSelectingEventHandler
Inserting, Updating y Deleting.Inserting, Updating, and Deleting.

Se produce antes de que se realice una operación de inserción, actualización o eliminación.Occur before an insert, update, or delete operation is performed.
ObjectDataSourceMethodEventArgs ObjectDataSourceMethodEventHandler
Selected

Se produce después de recuperar los datos.Occurs after the data is retrieved.
ObjectDataSourceStatusEventArgs ObjectDataSourceStatusEventHandler
Inserted, Updated y Deleted.Inserted, Updated, and Deleted.

Se produce después de que se complete la operación de inserción, actualización o eliminación.Occur after the insert, update, or delete operation is completed.
ObjectDataSourceStatusEventArgs ObjectDataSourceStatusEventHandler
ObjectDisposing.ObjectDisposing.

Se produce antes de que se destruya un objeto comercial.Occurs before a business object is destroyed.
ObjectDataSourceDisposingEventArgs ObjectDataSourceDisposingEventHandler

Constructores

ObjectDataSourceDisposingEventArgs(Object)

Inicializa una nueva instancia de la clase ObjectDataSourceDisposingEventArgs usando el objeto especificado.Initializes a new instance of the ObjectDataSourceDisposingEventArgs class using the specified object.

Propiedades

Cancel

Obtiene o establece un valor que indica si se debe cancelar el evento.Gets or sets a value indicating whether the event should be canceled.

(Heredado de CancelEventArgs)
ObjectInstance

Obtiene un objeto que representa el objeto comercial con el que realiza operaciones de datos el control ObjectDataSource.Gets an object that represents the business object with which the ObjectDataSource control performs data operations.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
GetHashCode()

Sirve como función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)

Se aplica a

Consulte también: