ObjectDataSourceDisposingEventArgs Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje data pro ObjectDisposing událost ObjectDataSource ovládacího prvku.
public ref class ObjectDataSourceDisposingEventArgs : System::ComponentModel::CancelEventArgs
public class ObjectDataSourceDisposingEventArgs : System.ComponentModel.CancelEventArgs
type ObjectDataSourceDisposingEventArgs = class
inherit CancelEventArgs
Public Class ObjectDataSourceDisposingEventArgs
Inherits CancelEventArgs
- Dědičnost
Příklady
Tato část obsahuje dva příklady kódu. První příklad kódu ukazuje použití ObjectDataSource ovládacího prvku s obchodním objektem a ovládacím GridView prvku k zobrazení informací. Druhý příklad kódu obsahuje příklad obchodního objektu střední vrstvy, který používá první příklad kódu.
Následující příklad kódu ukazuje použití ObjectDataSource ovládacího prvku s obchodním objektem a ovládacím GridView prvku k zobrazení informací. Můžete pracovat s obchodním objektem, který je velmi nákladný (z hlediska času nebo prostředků) a vytvořit pro každou operaci dat, kterou webová stránka provádí. Jedním ze způsobů, jak pracovat s nákladným objektem, může být vytvoření instance jednoho objektu a jeho uložení do mezipaměti pro následné operace místo vytvoření a zničení pro každou operaci dat. Tento příklad ukazuje tento vzor. Událost můžete zpracovat ObjectCreating a nejprve zkontrolovat mezipaměť objektu a pak vytvořit instanci, pouze pokud ještě není uložena v mezipaměti. Potom zpracujte ObjectDisposing událost, aby se obchodní objekt ukládaly do mezipaměti pro budoucí použití, místo aby ji zničily. V tomto příkladu CancelEventArgs.Cancel je vlastnost objektu ObjectDataSourceDisposingEventArgs nastavena na , aby truesměrovat ObjectDataSource na nevolat metodu Dispose 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>
Následující příklad kódu poskytuje příklad střední vrstvy obchodní objekt, který používá předchozí příklad kódu. Příklad kódu se skládá ze základního obchodního objektu definovaného EmployeeLogic třídou, což je třída, která udržuje stav a zapouzdřuje obchodní logiku. V případě kompletního funkčního příkladu je nutné tento kód zkompilovat jako knihovnu a pak tyto třídy použít ze stránky 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
Poznámky
Třída ObjectDataSourceDisposingEventArgs se používá v OnObjectDisposing metodě k poskytnutí přístupu k instanci obchodního objektu po provedení operací s daty, které používají ObjectDataSource ovládací prvek a obchodní objekt, ale před zničením obchodního objektu. K obchodnímu objektu ObjectInstance se přistupuje pomocí vlastnosti. Přidáním delegáta pro zpracování ObjectDisposing události můžete přistupovat ke všem veřejně vystaveným členům obchodního objektu, aby mohli provést jakoukoli konečnou práci nebo vyčistit.
Metoda OnObjectDisposing není volána ovládacím ObjectDataSource prvku, pokud metoda, která provádí datové operace, je static metoda. Pokud je metoda statická, nevytvořila se žádná instance obchodního objektu.
Ovládací ObjectDataSource prvek zveřejňuje mnoho událostí, které můžete zpracovat pro práci s podkladovým obchodním objektem v různých časech jeho životního cyklu. Následující tabulka uvádí události a přidružené EventArgs třídy a delegáty obslužné rutiny událostí.
| Zvláštní událost | EventArgs | EventHandler |
|---|---|---|
|
ObjectCreating. Nastane bezprostředně před vytvořením instance obchodního objektu. |
ObjectDataSourceEventArgs | ObjectDataSourceObjectEventHandler |
|
ObjectCreated. Nastane okamžitě po vytvoření instance obchodního objektu. |
ObjectDataSourceEventArgs | ObjectDataSourceObjectEventHandler |
|
Selecting. Nastane před načtením dat. |
ObjectDataSourceSelectingEventArgs | ObjectDataSourceSelectingEventHandler |
|
Inserting, Updating a Deleting. Nastane před provedením operace vložení, aktualizace nebo odstranění. |
ObjectDataSourceMethodEventArgs | ObjectDataSourceMethodEventHandler |
| Selected Nastane po načtení dat. |
ObjectDataSourceStatusEventArgs | ObjectDataSourceStatusEventHandler |
|
Inserted, Updated a Deleted. Nastane po dokončení operace vložení, aktualizace nebo odstranění. |
ObjectDataSourceStatusEventArgs | ObjectDataSourceStatusEventHandler |
|
ObjectDisposing. Nastane před zničením obchodního objektu. |
ObjectDataSourceDisposingEventArgs | ObjectDataSourceDisposingEventHandler |
Konstruktory
| Name | Description |
|---|---|
| ObjectDataSourceDisposingEventArgs(Object) |
Inicializuje novou instanci ObjectDataSourceDisposingEventArgs třídy pomocí zadaného objektu. |
Vlastnosti
| Name | Description |
|---|---|
| Cancel |
Získá nebo nastaví hodnotu určující, zda má být událost zrušena. (Zděděno od CancelEventArgs) |
| ObjectInstance |
Získá objekt, který představuje obchodní objekt, se kterým ObjectDataSource ovládací prvek provádí datové operace. |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |