ObjectDataSourceDisposingEventArgs Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt Daten für das ObjectDisposing-Ereignis des ObjectDataSource-Steuerelements bereit.
public ref class ObjectDataSourceDisposingEventArgs : System::ComponentModel::CancelEventArgs
public class ObjectDataSourceDisposingEventArgs : System.ComponentModel.CancelEventArgs
type ObjectDataSourceDisposingEventArgs = class
inherit CancelEventArgs
Public Class ObjectDataSourceDisposingEventArgs
Inherits CancelEventArgs
- Vererbung
Beispiele
Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Codebeispiel wird veranschaulicht, wie Ein ObjectDataSource -Steuerelement mit einem Geschäftsobjekt und einem GridView -Steuerelement zum Anzeigen von Informationen verwendet wird. Das zweite Codebeispiel stellt das Im ersten Codebeispiel verwendete Geschäftsobjekt der mittleren Ebene bereit.
Im folgenden Codebeispiel wird veranschaulicht, wie Ein ObjectDataSource -Steuerelement mit einem Geschäftsobjekt und einem GridView -Steuerelement zum Anzeigen von Informationen verwendet wird. Möglicherweise arbeiten Sie mit einem Geschäftsobjekt, das (in Bezug auf Zeit oder Ressourcen) sehr teuer ist, um für jeden Datenvorgang, den Ihre Webseite ausführt, zu erstellen. Eine Möglichkeit, mit einem teuren Objekt zu arbeiten, besteht darin, einmal eine instance davon zu erstellen und dann für nachfolgende Vorgänge zwischenzuspeichern, anstatt es für jeden Datenvorgang zu erstellen und zu zerstören. In diesem Beispiel wird dieses Muster veranschaulicht. Sie können das ObjectCreating Ereignis behandeln, um zuerst den Cache auf ein Objekt zu überprüfen und dann eine instance zu erstellen, nur wenn noch keins zwischengespeichert ist. Behandeln Sie dann das ObjectDisposing Ereignis, um das Geschäftsobjekt für die zukünftige Verwendung zwischenzuspeichern, anstatt es zu zerstören. In diesem Beispiel wird die CancelEventArgs.Cancel -Eigenschaft des ObjectDataSourceDisposingEventArgs -Objekts auf true
festgelegt, um die ObjectDataSource -Methode auf der instance nicht aufzurufenDispose.
<%@ 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>
Das folgende Codebeispiel enthält ein Beispiel für ein Geschäftsobjekt der mittleren Ebene, das im vorherigen Codebeispiel verwendet wird. Das Codebeispiel besteht aus einem grundlegenden Geschäftsobjekt, das von der EmployeeLogic
-Klasse definiert wird. Hierbei handelt es sich um eine Klasse, die den Zustand verwaltet und geschäftslogik kapselt. Für ein vollständiges Funktionierendes Beispiel müssen Sie diesen Code als Bibliothek kompilieren und dann diese Klassen von einer ASP-Seite verwenden.
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
Hinweise
Die ObjectDataSourceDisposingEventArgs -Klasse wird in der OnObjectDisposing -Methode verwendet, um Zugriff auf das Geschäftsobjekt zu ermöglichen, instance nachdem alle Datenvorgänge ausgeführt wurden, die das Steuerelement und das ObjectDataSource Geschäftsobjekt verwenden, aber bevor das Geschäftsobjekt zerstört wird. Auf das Geschäftsobjekt wird über die ObjectInstance -Eigenschaft zugegriffen. Durch Hinzufügen eines Delegaten zur Behandlung des Ereignisses ObjectDisposing können Sie auf alle öffentlich verfügbar gemachten Mitglieder des Geschäftsobjekts zugreifen, um abschließende Arbeiten auszuführen oder sauber.
Die OnObjectDisposing -Methode wird vom ObjectDataSource -Steuerelement nicht aufgerufen, wenn die Methode, die Datenvorgänge ausführt, eine static
-Methode ist. Wenn die Methode statisch ist, wird kein Geschäftsobjekt instance erstellt.
Das ObjectDataSource Steuerelement macht viele Ereignisse verfügbar, die Sie behandeln können, um mit dem zugrunde liegenden Geschäftsobjekt zu verschiedenen Zeiten im Lebenszyklus zu arbeiten. In der folgenden Tabelle sind die Ereignisse und die zugehörigen EventArgs Klassen und Ereignishandlerdelegaten aufgeführt.
Konstruktoren
ObjectDataSourceDisposingEventArgs(Object) |
Initialisiert eine neue Instanz der ObjectDataSourceDisposingEventArgs-Klasse unter Verwendung des angegebenen Objekts. |
Eigenschaften
Cancel |
Ruft einen Wert ab, der angibt, ob das Ereignis abgebrochen werden soll, oder legt diesen fest. (Geerbt von CancelEventArgs) |
ObjectInstance |
Ruft ein Objekt ab, das das Geschäftsobjekt darstellt, mit dem das ObjectDataSource-Steuerelement Datenoperationen ausführt. |
Methoden
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |