ObjectDataSourceDisposingEventArgs Klasse

Definition

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
ObjectDataSourceDisposingEventArgs

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 truefestgelegt, 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.

Ereignis EventArgs EventHandler
ObjectCreating.

Tritt unmittelbar vor der erstellung des instance des Geschäftsobjekts auf.
ObjectDataSourceEventArgs ObjectDataSourceObjectEventHandler
ObjectCreated.

Tritt unmittelbar nach dem Erstellen der instance des Geschäftsobjekts auf.
ObjectDataSourceEventArgs ObjectDataSourceObjectEventHandler
Selecting.

Tritt auf, bevor die Daten abgerufen werden.
ObjectDataSourceSelectingEventArgs ObjectDataSourceSelectingEventHandler
Inserting, Updatingund Deleting.

Tritt auf, bevor ein Einfüge-, Aktualisierungs- oder Löschvorgang ausgeführt wird.
ObjectDataSourceMethodEventArgs ObjectDataSourceMethodEventHandler
Selected

Tritt auf, nachdem die Daten abgerufen wurden.
ObjectDataSourceStatusEventArgs ObjectDataSourceStatusEventHandler
Inserted, Updatedund Deleted.

Tritt auf, nachdem der Einfüge-, Aktualisierungs- oder Löschvorgang abgeschlossen wurde.
ObjectDataSourceStatusEventArgs ObjectDataSourceStatusEventHandler
ObjectDisposing.

Tritt auf, bevor ein Geschäftsobjekt zerstört wird.
ObjectDataSourceDisposingEventArgs ObjectDataSourceDisposingEventHandler

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)

Gilt für:

Weitere Informationen