İngilizce dilinde oku

Aracılığıyla paylaş


ObjectDataSourceDisposingEventHandler Temsilci

Tanım

Denetimin olayını ObjectDataSource işleyecek ObjectDisposing yöntemi temsil eder.

C#
public delegate void ObjectDataSourceDisposingEventHandler(object sender, ObjectDataSourceDisposingEventArgs e);

Parametreler

sender
Object

Olayın kaynağı olan ObjectDataSource.

Örnekler

Bu bölüm iki kod örneği içerir. İlk kod örneği, bir denetimin ObjectDataSource bir iş nesnesiyle ve GridView denetimle bilgileri görüntülemek için nasıl kullanılacağını gösterir. İkinci kod örneği, ilk kod örneğinin kullandığı örnek bir orta katman iş nesnesi sağlar.

Aşağıdaki kod örneği, bir denetimin ObjectDataSource bir iş nesnesi ve GridView bir denetimle bilgileri görüntülemek için nasıl kullanılacağını gösterir. Web sayfanızın gerçekleştirdiği her veri işlemi için oluşturmak üzere çok pahalı (zaman veya kaynaklar açısından) bir iş nesnesiyle çalışabilirsiniz. Pahalı bir nesneyle çalışmanın bir yolu, bunun bir örneğini bir kez oluşturmak ve ardından her veri işlemi için oluşturup yok etmek yerine sonraki işlemler için önbelleğe almak olabilir. Bu örnekte bu desen gösterilmektedir. Olayı işleyip ObjectCreating önce bir nesnenin önbelleğini denetleyebilir ve ardından yalnızca bir tane henüz önbelleğe alınmamışsa bir örnek oluşturabilirsiniz. Ardından, iş nesnesini yok etmek yerine gelecekte kullanmak üzere önbelleğe almak için olayı işleyin ObjectDisposing . Bu örnekte sınıfının özelliğiObjectDataSourceDisposingEventArgs, CancelEventArgs.Cancel örneğinde çağrılmayacak Dispose şekilde trueyönlendirmek ObjectDataSource için olarak ayarlanmıştır.

ASP.NET (C#)
<%@ 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>

Aşağıdaki kod örneği, önceki kod örneğinin kullandığı bir orta katman iş nesnesi örneği sağlar. Kod örneği, durumu koruyan ve iş mantığını kapsülleyen bir sınıf olan sınıfı tarafından EmployeeLogic tanımlanan temel bir iş nesnesinden oluşur. Tam bir çalışma örneği için bu kodu bir kitaplık olarak derlemeniz ve ardından bir ASP sayfasından bu sınıfları kullanmanız gerekir.

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

Açıklamalar

Bir ObjectDataSourceDisposingEventHandler temsilci oluşturduğunuzda, olayı işleyecek yöntemi tanımlarsınız. Olayı olay işleyicinizle ilişkilendirmek için olaya temsilcinin bir örneğini ekleyin. Olay her gerçekleştiğinde, olay işleyici (siz temsilciyi kaldırmadığınız sürece) çağrılır. Olayları işleme hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.

Uzantı Metotları

GetMethodInfo(Delegate)

Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır.

Şunlara uygulanır

Ürün Sürümler
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Ayrıca bkz.