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, jak použít ovládací prvek ObjectDataSource s obchodním objektem a ovládacím GridView prvku k zobrazení informací. Druhý příklad kódu poskytuje příklad obchodního objektu střední vrstvy, který používá první příklad kódu.
Následující příklad kódu ukazuje, jak použít ovládací prvek ObjectDataSource 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ů) pro každou operaci dat, kterou webová stránka provede. Jedním ze způsobů, jak pracovat s nákladným objektem, může být vytvořit jeho instanci jednou a pak ji uložit do mezipaměti pro následné operace místo vytvoření a zničení pro každou operaci s daty. Tento příklad ukazuje tento vzor. Událost můžete zpracovat ObjectCreating tak, že nejprve zkontrolujete mezipaměť objektu a pak vytvoříte instanci, pouze pokud ještě není uložená v mezipaměti. Pak zpracujte ObjectDisposing událost tak, aby se obchodní objekt ukládaly do mezipaměti pro budoucí použití místo jeho zničení. V tomto příkladu CancelEventArgs.Cancel je vlastnost objektu ObjectDataSourceDisposingEventArgs nastavena na true
, aby ObjectDataSource příkaz nevolal metodu Dispose v instanci.
<%@ 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 obsahuje příklad obchodního objektu střední vrstvy, 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. Pro úplný funkční příklad musíte tento kód zkompilovat jako knihovnu a pak použít tyto třídy 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, který bude událost zpracovávat ObjectDisposing , 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 je metoda, která provádí operace s daty, metodou static
. 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í.
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, Updatinga Deleting. Nastane před provedením operace vložení, aktualizace nebo odstranění. |
ObjectDataSourceMethodEventArgs | ObjectDataSourceMethodEventHandler |
Selected Nastane po načtení dat. |
ObjectDataSourceStatusEventArgs | ObjectDataSourceStatusEventHandler |
Inserted, Updateda 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
ObjectDataSourceDisposingEventArgs(Object) |
Inicializuje novou instanci ObjectDataSourceDisposingEventArgs třídy pomocí zadaného objektu. |
Vlastnosti
Cancel |
Získá nebo nastaví hodnotu označ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í operace dat. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |