Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

ObjectDataSourceDisposingEventArgs-Klasse

 

Veröffentlicht: Oktober 2016

Stellt Daten für das ObjectDisposing -Ereignis der ObjectDataSource Steuerelement.

Namespace:   System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)

System.Object
  System.EventArgs
    System.ComponentModel.CancelEventArgs
      System.Web.UI.WebControls.ObjectDataSourceDisposingEventArgs

public class ObjectDataSourceDisposingEventArgs : CancelEventArgs

NameBeschreibung
System_CAPS_pubmethodObjectDataSourceDisposingEventArgs(Object)

Initialisiert eine neue Instanz der ObjectDataSourceDisposingEventArgs -Klasse mithilfe des angegebenen Objekts.

NameBeschreibung
System_CAPS_pubpropertyCancel

Ruft ab oder legt einen Wert, der angibt, ob das Ereignis abgebrochen werden soll.(Geerbt von „CancelEventArgs“.)

System_CAPS_pubpropertyObjectInstance

Ruft ein Objekt, das das Geschäftsobjekt, mit denen die ObjectDataSource -Steuerelement Datenoperationen ausführt.

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Geerbt von „Object“.)

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

Die ObjectDataSourceDisposingEventArgs -Klasse wird verwendet, die OnObjectDisposing Methode, um den Zugriff auf die Business-Objektinstanz nachdem Datenoperationen bereitzustellen, das Verwenden der ObjectDataSource -Steuerelement und Geschäftsobjekt durchgeführt, jedoch bevor das Geschäftsobjekt zerstört wurde. Das Geschäftsobjekt erfolgt mithilfe der ObjectInstance Eigenschaft. Durch Hinzufügen ein Delegaten behandeln die ObjectDisposing Ereignis, können Sie alle öffentlich verfügbar gemachte Member des Geschäftsobjekts um abschließende Aufgaben oder Bereinigungen zugreifen.

Die OnObjectDisposing Methode wird nicht aufgerufen, indem die ObjectDataSource steuern, wenn die Methode, die Datenoperationen ausführt, eine static Methode. Keine Business-Objektinstanz wird erstellt, wenn die Methode statisch ist.

Die ObjectDataSource Steuerelement macht viele Ereignisse, die Sie behandeln können, um mit den zugrunde liegenden Geschäftsobjekten zu verschiedenen Zeitpunkten im Lebenszyklus zu arbeiten. Die folgende Tabelle enthält die Ereignisse sowie die zugeordneten EventArgs Klassen und Ereignishandlerdelegaten.

event

EventArgs

EventHandler

ObjectCreating.

Tritt auf, unmittelbar bevor die Instanz des Geschäftsobjekts erstellt wird.

ObjectDataSourceEventArgs

ObjectDataSourceObjectEventHandler

ObjectCreated.

Tritt auf, sobald die Instanz des Geschäftsobjekts erstellt wird.

ObjectDataSourceEventArgs

ObjectDataSourceObjectEventHandler

Selecting.

Tritt auf, bevor die Daten abgerufen werden.

ObjectDataSourceSelectingEventArgs

ObjectDataSourceSelectingEventHandler

Inserting, Updating und Deleting.

Erfolgen Sie, bevor eine Insert, Update oder Delete-Vorgang ausgeführt wird.

ObjectDataSourceMethodEventArgs

ObjectDataSourceMethodEventHandler

Selected

Tritt auf, nachdem die Daten abgerufen werden.

ObjectDataSourceStatusEventArgs

ObjectDataSourceStatusEventHandler

Inserted, Updated und Deleted.

Treten Sie auf, nachdem die Insert, Update oder Delete-Vorgang abgeschlossen ist.

ObjectDataSourceStatusEventArgs

ObjectDataSourceStatusEventHandler

ObjectDisposing.

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

ObjectDataSourceDisposingEventArgs

ObjectDataSourceDisposingEventHandler

Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Codebeispiel wird veranschaulicht, wie Sie ein ObjectDataSource -Steuerelement mit einem Geschäftsobjekt und einem GridView Steuerelement zum Anzeigen von Informationen. Das zweite Codebeispiel enthält die Beispiel-Geschäftsobjekt mittlerer Ebene, das im erste Codebeispiel verwendet.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein ObjectDataSource -Steuerelement mit einem Geschäftsobjekt und einem GridView Steuerelement zum Anzeigen von Informationen. Möglicherweise arbeiten Sie mit einem Geschäftsobjekt, das sehr teuer (als Zeit oder Ressourcen) für jeden Datenvorgang zu erstellen, die Ihre Webseite durchführt. Eine Möglichkeit zur Arbeit mit einem aufwendigen Objekt möglicherweise einmal eine Instanz davon erstellen und dann für nachfolgende Operationen anstatt zu erstellen und zerstören für jeden Datenvorgang Zwischenspeichern. Dieses Beispiel veranschaulicht dieses Muster. Sie behandeln können die ObjectCreating Ereignisses zuerst prüfen, ob des Caches für ein Objekt, und dann eine Instanz erstellen, wenn noch keine zwischengespeichert wurde. Behandeln Sie dann das ObjectDisposing Ereignis Zwischenspeichern das Geschäftsobjekt, das für die zukünftige Verwendung, anstatt es zu löschen. In diesem Beispiel die CancelEventArgs.Cancel Eigenschaft der ObjectDataSourceDisposingEventArgs -Objekts festgelegt, um true, leiten die ObjectDataSource nicht aufrufen, die Dispose Methode für die Instanz.

<%@ 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>

Das folgende Codebeispiel enthält ein Beispiel-Geschäftsobjekt mittlerer Ebene, die im vorherigen Codebeispiel verwendet. Das Codebeispiel besteht aus einem Unternehmen-Objekt, definiert durch die EmployeeLogic -Klasse, die eine Klasse ist, die ihren Zustand beibehält und die Geschäftslogik kapselt. Ein vollständiges Beispiel für die Verwendung müssen Sie diesen Code als Bibliothek kompilieren und verwenden Sie diese Klassen aus einer ASP-Seite.

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;
    }
  }
}

.NET Framework
Verfügbar seit 2.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: