Sdílet prostřednictvím


ObjectDataSourceDisposingEventArgs Třída

Definice

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
ObjectDataSourceDisposingEventArgs

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)

Platí pro

Viz také