ObjectDataSourceDisposingEventArgs Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece dados para o evento ObjectDisposing do controle ObjectDataSource.
public ref class ObjectDataSourceDisposingEventArgs : System::ComponentModel::CancelEventArgs
public class ObjectDataSourceDisposingEventArgs : System.ComponentModel.CancelEventArgs
type ObjectDataSourceDisposingEventArgs = class
inherit CancelEventArgs
Public Class ObjectDataSourceDisposingEventArgs
Inherits CancelEventArgs
- Herança
Exemplos
Esta seção contém dois exemplos de código. O primeiro exemplo de código demonstra como usar um ObjectDataSource controle com um objeto de negócios e um GridView controle para exibir informações. O segundo exemplo de código fornece o exemplo de objeto comercial de camada intermediária que o primeiro exemplo de código usa.
O exemplo de código a seguir demonstra como usar um ObjectDataSource controle com um objeto de negócios e um GridView controle para exibir informações. Você pode trabalhar com um objeto de negócios muito caro (em termos de tempo ou recursos) para criar para cada operação de dados executada pela página da Web. Uma maneira de trabalhar com um objeto caro pode ser criar uma instância dele uma vez e, em seguida, armazená-la em cache para operações subsequentes em vez de criá-lo e destruí-lo para cada operação de dados. Este exemplo demonstra esse padrão. Você pode manipular o ObjectCreating evento para marcar o cache de um objeto primeiro e, em seguida, criar uma instância, somente se uma ainda não estiver armazenada em cache. Em seguida, manipule o ObjectDisposing evento para armazenar em cache o objeto de negócios para uso futuro, em vez de destruí-lo. Neste exemplo, a CancelEventArgs.Cancel propriedade do ObjectDataSourceDisposingEventArgs objeto é definida true
como , para direcionar o ObjectDataSource para não chamar o Dispose método na instância.
<%@ 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>
O exemplo de código a seguir fornece um exemplo de objeto de negócios de camada intermediária que o exemplo de código anterior usa. O exemplo de código consiste em um objeto de negócios básico, definido pela EmployeeLogic
classe , que é uma classe que mantém o estado e encapsula a lógica de negócios. Para obter um exemplo de trabalho completo, você deve compilar esse código como uma biblioteca e, em seguida, usar essas classes de uma página 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
Comentários
A ObjectDataSourceDisposingEventArgs classe é usada no OnObjectDisposing método para fornecer acesso à instância de objeto de negócios depois que todas as operações de dados que estão usando o ObjectDataSource controle e o objeto de negócios são executadas, mas antes que o objeto de negócios seja destruído. O objeto de negócios é acessado usando a ObjectInstance propriedade . Ao adicionar um delegado para lidar com o ObjectDisposing evento, você pode acessar todos os membros expostos publicamente do objeto de negócios para executar qualquer trabalho final ou limpo.
O OnObjectDisposing método não será chamado pelo ObjectDataSource controle , se o método que executa operações de dados for um static
método . Nenhuma instância de objeto de negócios é criada quando o método é estático.
O ObjectDataSource controle expõe muitos eventos que você pode manipular para trabalhar com o objeto de negócios subjacente em vários momentos em seu ciclo de vida. A tabela a seguir lista os eventos e as classes associadas EventArgs e os delegados do manipulador de eventos.
Construtores
ObjectDataSourceDisposingEventArgs(Object) |
Inicializa uma nova instância da classe ObjectDataSourceDisposingEventArgs usando o objeto especificado. |
Propriedades
Cancel |
Obtém ou define um valor que indica se o evento deve ser cancelado. (Herdado de CancelEventArgs) |
ObjectInstance |
Obtém um objeto que representa o objeto de negócios com o qual o controle ObjectDataSource executa operações de dados. |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |