ObjectDataSourceDisposingEventArgs クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ObjectDisposing コントロールの ObjectDataSource イベントのデータを提供します。
public ref class ObjectDataSourceDisposingEventArgs : System::ComponentModel::CancelEventArgs
public class ObjectDataSourceDisposingEventArgs : System.ComponentModel.CancelEventArgs
type ObjectDataSourceDisposingEventArgs = class
inherit CancelEventArgs
Public Class ObjectDataSourceDisposingEventArgs
Inherits CancelEventArgs
- 継承
例
このセクションには、2 つのコード例が含まれています。 最初のコード例では、ビジネス オブジェクトとコントロールを ObjectDataSource 使用して情報を GridView 表示する方法を示します。 2 番目のコード例では、最初のコード例で使用する中間層ビジネス オブジェクトの例を示します。
次のコード例では、ビジネス オブジェクトとコントロールでコントロールを ObjectDataSource 使用して情報を GridView 表示する方法を示します。 (時間またはリソースの観点から) 非常にコストの高いビジネス オブジェクトを使用して、Web ページが実行するすべてのデータ操作を作成する場合があります。 コストの高いオブジェクトを操作する方法の 1 つは、そのインスタンスを 1 回作成してから、すべてのデータ操作に対して作成および破棄するのではなく、後続の操作用にキャッシュすることです。 この例では、このパターンを示します。 イベントをObjectCreating処理して、最初にオブジェクトのキャッシュをチェックしてから、インスタンスを作成できます (まだキャッシュされていない場合のみ)。 次に、イベントを ObjectDisposing 処理して、ビジネス オブジェクトを破棄するのではなく、将来使用するためにキャッシュします。 この例では、 CancelEventArgs.Cancel オブジェクトの ObjectDataSourceDisposingEventArgs プロパティを に設定してtrue
、 インスタンスで メソッドをDispose呼び出さないよう を指示ObjectDataSourceします。
<%@ 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>
次のコード例では、前のコード例で使用する中間層ビジネス オブジェクトの例を示します。 このコード例は、 クラスによって定義される基本的なビジネス オブジェクトで EmployeeLogic
構成されます。これは、状態を維持し、ビジネス ロジックをカプセル化するクラスです。 完全な動作例については、このコードをライブラリとしてコンパイルしてから、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
注釈
ObjectDataSourceDisposingEventArgsコントロールとビジネス オブジェクトをOnObjectDisposing使用しているデータ操作が実行された後、ビジネス オブジェクトが破棄される前に、 クラスを使用してObjectDataSourceビジネス オブジェクト インスタンスへのアクセスを提供します。 ビジネス オブジェクトには、 プロパティを使用して ObjectInstance アクセスします。 イベントを処理ObjectDisposingするデリゲートを追加すると、ビジネス オブジェクトの公開されているメンバーにアクセスして、最終的な作業やクリーンを実行できます。
OnObjectDisposingデータ操作を実行するObjectDataSourceメソッドが メソッドである場合、メソッドは static
コントロールによって呼び出されません。 メソッドが静的な場合、ビジネス オブジェクト インスタンスは作成されません。
コントロールは ObjectDataSource 、基になるビジネス オブジェクトをライフサイクルのさまざまな時点で操作するために処理できる多くのイベントを公開します。 次の表に、イベントと、関連 EventArgs するクラスとイベント ハンドラー デリゲートの一覧を示します。
Event | EventArgs | EventHandler |
---|---|---|
ObjectCreating. ビジネス オブジェクトのインスタンスが作成される直前に発生します。 |
ObjectDataSourceEventArgs | ObjectDataSourceObjectEventHandler |
ObjectCreated. ビジネス オブジェクトのインスタンスが作成された直後に発生します。 |
ObjectDataSourceEventArgs | ObjectDataSourceObjectEventHandler |
Selecting. データが取得される前に発生します。 |
ObjectDataSourceSelectingEventArgs | ObjectDataSourceSelectingEventHandler |
Inserting、 Updating、および Deleting。 挿入、更新、または削除操作が実行される前に発生します。 |
ObjectDataSourceMethodEventArgs | ObjectDataSourceMethodEventHandler |
Selected データが取得された後に発生します。 |
ObjectDataSourceStatusEventArgs | ObjectDataSourceStatusEventHandler |
Inserted、 Updated、および Deleted。 挿入、更新、または削除の操作が完了した後に発生します。 |
ObjectDataSourceStatusEventArgs | ObjectDataSourceStatusEventHandler |
ObjectDisposing. ビジネス オブジェクトが破棄される前に発生します。 |
ObjectDataSourceDisposingEventArgs | ObjectDataSourceDisposingEventHandler |
コンストラクター
ObjectDataSourceDisposingEventArgs(Object) |
指定されたオブジェクトを使用して、ObjectDataSourceDisposingEventArgs クラスの新しいインスタンスを初期化します。 |
プロパティ
Cancel |
イベントをキャンセルするかどうかを示す値を取得または設定します。 (継承元 CancelEventArgs) |
ObjectInstance |
ObjectDataSource コントロールがデータ操作を行うときに使用するビジネス オブジェクトを表すオブジェクトを取得します。 |
メソッド
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
こちらもご覧ください
.NET