ObjectDataSource.ObjectCreating イベントとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ObjectDataSource.ObjectCreating イベントの意味・解説 

ObjectDataSource.ObjectCreating イベント

メモ : このイベントは、.NET Framework version 2.0新しく追加されたものです。

TypeName プロパティ識別されるオブジェクト作成される前に発生します

名前空間: System.Web.UI.WebControls
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Event ObjectCreating As
 ObjectDataSourceObjectEventHandler
Dim instance As ObjectDataSource
Dim handler As ObjectDataSourceObjectEventHandler

AddHandler instance.ObjectCreating, handler
public event ObjectDataSourceObjectEventHandler ObjectCreating
public:
event ObjectDataSourceObjectEventHandler^ ObjectCreating {
    void add (ObjectDataSourceObjectEventHandler^ value);
    void remove (ObjectDataSourceObjectEventHandler^ value);
}
/** @event */
public void add_ObjectCreating (ObjectDataSourceObjectEventHandler
 value)

/** @event */
public void remove_ObjectCreating (ObjectDataSourceObjectEventHandler
 value)
JScript では、イベント使用できますが、新規に宣言することはできません。
解説解説
使用例使用例

このセクションには、2 つコード例含まれています。1 つ目のコード例では、ビジネス オブジェクトおよび GridView コントロールで、ObjectDataSource オブジェクト使用して情報表示する方法示します2 つ目のコード例では、1 つ目のコード例使用されている中間層ビジネス オブジェクト示します

ビジネス オブジェクトおよび GridView コントロールで、ObjectDataSource コントロール使用して情報表示する方法次のコード例示しますWeb ページ実行されるデータ操作に、作成時の負荷大きい (作成時間がかかるリソース消費激しいなど) ビジネス オブジェクト使用している場合あります負荷のかかるオブジェクト使用する場合は、データ操作するたびにインスタンス化破棄繰り返すではなくインスタンス化したオブジェクト後続の処理で再利用できるようにキャッシュ格納しておくことをお勧めます。

メモメモ

実働アプリケーションでは、同じインスタンス使用して複数要求同時に終了する場合あります。したがってスレッド セーフ方法オブジェクト実装する必要があります

このコード例では、このパターン示しますObjectCreating イベント処理することで、まずキャッシュオブジェクト存在するかどうか調べ存在しない場合にのみ、インスタンス作成できます次に、ObjectDisposing イベント処理しビジネス オブジェクト破棄せずに、キャッシュ保存して後で使用できるようにします。このコード例では、ObjectDataSourceオブジェクトに対して Dispose メソッド呼び出さないように、ObjectDataSourceDisposingEventArgs オブジェクトの CancelEventArgs.Cancel プロパティtrue設定されています。

<%@ Import namespace="Samples.AspNet.VB"
 %>
<%@ Page language="vb" %>
<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>
  <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>
<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<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>
  <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>

前のコード例使用した中間層ビジネス オブジェクトの例を次のコード例示します。このコード例は、状態を維持しビジネス ロジックカプセル化する EmployeeLogic クラスによって定義される基本ビジネス オブジェクト構成されます。実際に動作させるためには、このコードライブラリとしてコンパイルし、これらのクラスASP.NET ページ (.aspx ファイル) から使用する必要があります

Imports System
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 'New
    
    
    Public Sub New(ByVal
 creationTime As DateTime) 
        _creationTime = creationTime
    
    End Sub 'New
    
    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 'EmployeeLogic
End Namespace ' Samples.AspNet.VB
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;
    }
  }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ObjectDataSource クラス
ObjectDataSource メンバ
System.Web.UI.WebControls 名前空間
OnObjectCreating
ObjectDataSource.TypeName プロパティ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ObjectDataSource.ObjectCreating イベント」の関連用語

ObjectDataSource.ObjectCreating イベントのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ObjectDataSource.ObjectCreating イベントのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS