ObjectDataSource Parametre Değerlerini Programlı Olarak Ayarlama (C#)

tarafından Scott Mitchell

PDF’yi İndir

Bu öğreticide DAL ve BLL'mize tek bir giriş parametresi kabul eden ve veri döndüren bir yöntem eklemeyi inceleyeceğiz. Örnek, bu parametreyi program aracılığıyla ayarlar.

Giriş

Önceki öğreticide gördüğümüz gibi, ObjectDataSource'un yöntemlerine parametre değerlerini bildirimli olarak geçirmek için bir dizi seçenek mevcuttur. Parametre değeri sabit kodlanmışsa, sayfadaki bir Web denetiminden geliyorsa veya bir veri kaynağı nesnesi tarafından okunabilen başka bir kaynaktaysa Parameter , örneğin, bu değer kod satırı yazmadan giriş parametresine bağlanabilir.

Ancak, parametre değerinin yerleşik veri kaynağı Parameter nesnelerinden biri tarafından hesaba katılmayan bir kaynaktan geldiği zamanlar olabilir. Sitemiz kullanıcı hesaplarını destekliyorsa, şu anda oturum açmış olan ziyaretçinin Kullanıcı Kimliğine göre parametresini ayarlamak isteyebiliriz. Veya ObjectDataSource'un temel nesnesinin yöntemine göndermeden önce parametre değerini özelleştirmemiz gerekebilir.

ObjectDataSource'un Select yöntemi çağrıldığında ObjectDataSource ilk olarak Selecting olayını başlatır. Ardından ObjectDataSource'un temel alınan nesnesinin yöntemi çağrılır. Bu işlem tamamlandıktan sonra ObjectDataSource'un Selected olayı tetikler (Şekil 1'de bu olay dizisi gösterilmektedir). ObjectDataSource'un temel nesnesinin yöntemine geçirilen parametre değerleri, olay için Selecting bir olay işleyicisinde ayarlanabilir veya özelleştirilebilir.

ObjectDataSource'un Seçili ve Seçme Olayları, Temel Alınan Nesnenin Yöntemi Çağrılmadan Önce ve Sonra Tetikleniyor

Şekil 1: ObjectDataSource'un Selected ve Selecting Olayları, Temel Alınan Nesnenin Yöntemi Çağrılmadan Önce ve Sonra Tetikleniyor (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu öğreticide DAL ve BLL'mize türündeki tek bir giriş parametresini Monthint kabul eden ve belirtilen Monthiçinde işe alma yıldönümü olan çalışanlarla doldurulmuş bir nesne döndüren bir EmployeesDataTable yöntem eklemeyi inceleyeceğiz. Örneğimiz bu parametreyi geçerli aya göre program aracılığıyla ayarlayacak ve "Bu Ay Çalışan Yıldönümleri" listesini gösterecektir.

Haydi başlayalım!

1. Adım: Yöntemi EklemeEmployeesTableAdapter

İlk örneğimizde, belirli bir ayda gerçekleşen çalışanları HireDate almak için bir araç eklememiz gerekir. Bu işlevselliği mimarimize uygun olarak sağlamak için öncelikle uygun SQL deyimiyle eşleyen bir yöntem EmployeesTableAdapter oluşturmamız gerekir. Bunu başarmak için, Northwind TürüNdeki Veri Kümesi'ni açarak başlayın. Etikete EmployeesTableAdapter sağ tıklayın ve Sorgu Ekle'yi seçin.

EmployeesTableAdapter'a Yeni Sorgu Ekleme

Şekil 2: Öğesine Yeni Sorgu EmployeesTableAdapter Ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Satırları döndüren bir SQL deyimi eklemeyi seçin. Deyimi SELECT Belirtin ekranına ulaştığınızda için EmployeesTableAdapter varsayılan SELECT deyim zaten yüklenir. Yan tümcesine WHERE eklemeniz yeterlidir: WHERE DATEPART(m, HireDate) = @Month. DATEPART, bir türün belirli bir tarih bölümünü döndüren bir datetime T-SQL işlevidir; bu örnekte sütunun ayını HireDate döndürmek için kullanıyoruzDATEPART.

Yalnızca HireDate Sütununun <span class=@HiredBeforeDate Parametresinden Küçük veya Eşit Olduğu Satırları Döndür" />

Şekil 3: Yalnızca Sütunun HireDate Parametreye Eşit @HiredBeforeDate veya Küçük Olduğu Satırları Döndürme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Son olarak, ve yöntemi adlarını FillByHiredDateMonth sırasıyla ve GetEmployeesByHiredDateMontholarak değiştirinFillBy.GetDataBy

FillBy ve GetDataBy'den Daha Uygun Yöntem Adları Seçin

Şekil 4: Ve'den FillByGetDataBy Daha Uygun Yöntem Adları seçin (tam boyutlu görüntüyü görüntülemek için tıklayın)

Sihirbazı tamamlamak için Son'a tıklayın ve DataSet'in tasarım yüzeyine dönün. EmployeesTableAdapter artık belirtilen ayda işe alınan çalışanlara erişmek için yeni bir yöntem kümesi içermelidir.

Yeni Yöntemler DataSet'in Tasarım Yüzeyinde Görünür

Şekil 5: Yeni Yöntemler DataSet'in Tasarım Yüzeyinde Görünür (Tam boyutlu görüntüyü görüntülemek için tıklayın)

2. Adım: İş Mantığı Katmanına Yöntem EklemeGetEmployeesByHiredDateMonth(month)

Uygulama mimarimiz iş mantığı ve veri erişim mantığı için ayrı bir katman kullandığından, BLL'mize belirli bir tarihten önce işe alınan çalışanları almak için DAL'ye çağrıda bulunan bir yöntem eklememiz gerekir. EmployeesBLL.cs Dosyasını açın ve aşağıdaki yöntemi ekleyin:

[System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Select, false)]
public Northwind.EmployeesDataTable GetEmployeesByHiredDateMonth(int month)
{
    return Adapter.GetEmployeesByHiredDateMonth(month);
}

Bu sınıftaki diğer yöntemlerimizde olduğu gibi DAL'ye GetEmployeesByHiredDateMonth(month) çağrı yaparak sonuçları döndürmeniz yeterlidir.

3. Adım: İşe alım yıldönümü bu ay olan çalışanları görüntüleme

Bu örnek için son adımımız, işe alım yıldönümü bu ay olan çalışanları görüntülemektir. İlk olarak klasördeki ProgrammaticParams.aspxBasicReporting sayfaya bir GridView ekleyin ve veri kaynağı olarak yeni bir ObjectDataSource ekleyin. ObjectDataSource'ı olarak ayarlanmış sınıfını SelectMethod kullanacak EmployeesBLL şekilde GetEmployeesByHiredDateMonth(month)yapılandırın.

EmployeesBLL Sınıfını Kullanma

Şekil 6: Sınıfı kullanma EmployeesBLL (Tam boyutlu görüntüyü görüntülemek için tıklayın)

GetEmployeesByHiredDateMonth(ay) yönteminden öğesini seçin

Şekil 7: Yöntemden GetEmployeesByHiredDateMonth(month) 'i seçin (tam boyutlu görüntüyü görüntülemek için tıklayın)

Son ekran, parametre değerinin month kaynağını sağlamamızı ister. Bu değeri program aracılığıyla ayarlayacağımız için Parametre kaynağı seçeneğini varsayılan Yok seçeneğine bırakın ve Son'a tıklayın.

Parametre Kaynak Kümesini Yok olarak bırakın

Şekil 8: Parametre Kaynağı Kümesini Yok olarak bırakın (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu, ObjectDataSource'un SelectParameters koleksiyonunda belirtilen bir değere sahip olmayan bir nesne oluştururParameter.

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    OldValuesParameterFormatString="original_{0}"
    SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">
    <SelectParameters>
        <asp:Parameter Name="month" Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>

Bu değeri program aracılığıyla ayarlamak için ObjectDataSource'un Selecting olayı için bir olay işleyicisi oluşturmamız gerekir. Bunu yapmak için Tasarım görünümüne gidin ve ObjectDataSource'a çift tıklayın. Alternatif olarak, ObjectDataSource'ı seçin, Özellikler penceresi gidin ve şimşek simgesine tıklayın. Ardından, olayın yanındaki metin kutusuna Selecting çift tıklayın veya kullanmak istediğiniz olay işleyicisinin adını yazın.

Web Denetiminin Olaylarını Listelemek için Özellikler Penceresinde Şimşek Simgesine tıklayın

Şekil 9: Web Denetiminin Olaylarını Listelemek için Özellikler Penceresinde Şimşek Simgesine tıklayın

Her iki yaklaşım da sayfanın arka kod sınıfına ObjectDataSource'un Selecting olayı için yeni bir olay işleyicisi ekler. Bu olay işleyicisinde kullanarak e.InputParameters[parameterName]parametre değerlerini okuyabilir ve yazabiliriz. BuradaparameterName, etiketindeki <asp:Parameter> özniteliğin Name değeridir (InputParameterskoleksiyon, içinde olduğu gibi sıralı olarak e.InputParameters[index]da dizinlenebilir). parametresini month geçerli aya ayarlamak için olay işleyicisine Selecting aşağıdakileri ekleyin:

protected void ObjectDataSource1_Selecting
    (object sender, ObjectDataSourceSelectingEventArgs e)
{
    e.InputParameters["month"] = DateTime.Now.Month;
}

Bu sayfayı bir tarayıcı üzerinden ziyaret ederken, bu ay (Mart) 1994'ten beri şirkette olan Laura Callahan'ın yalnızca bir çalışanın işe alındığını görebiliriz.

Bu Ay Yıldönümleri Gösterilen Çalışanlar

Şekil 10: Bu Ay Yıldönümleri Gösterilen Çalışanlar (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Özet

ObjectDataSource parametrelerinin değerleri genellikle bildirim temelli olarak ayarlansa da, kod satırı gerektirmeden parametre değerlerini program aracılığıyla ayarlamak kolaydır. Tek yapmamız gereken ObjectDataSource'un Selecting olayı için, temel nesnenin yöntemi çağrılmadan önce tetiklenen bir olay işleyicisi oluşturmak ve koleksiyon aracılığıyla InputParameters bir veya daha fazla parametrenin değerlerini el ile ayarlamaktır.

Bu öğreticide Temel Raporlama bölümü sona erer. Sonraki öğreticide Filtreleme ve Master-Details Senaryoları bölümünden başlayarak, ziyaretçinin verileri filtrelemesine ve bir ana rapordan ayrıntılar raporuna detaya gitmesine izin verme tekniklerini inceleyeceğiz.

Mutlu Programlama!

Yazar hakkında

Yedi ASP/ASP.NET kitabının yazarı ve 4GuysFromRolla.com kurucusu Scott Mitchell, 1998'den beri Microsoft Web teknolojileriyle çalışmaktadır. Scott bağımsız bir danışman, eğitmen ve yazar olarak çalışmaktadır. Son kitabı Sams Teach Yourself ASP.NET 24 Saat içinde 2.0. Adresine adresinden veya adresinden ulaşabileceğiniz http://ScottOnWriting.NETblogu aracılığıyla ulaşabilirsinizmitchell@4GuysFromRolla.com.

Özel Teşekkürler

Bu öğretici serisi birçok yararlı gözden geçiren tarafından gözden geçirildi. Bu öğreticinin baş gözden geçireni Hilton Giesenow oldu. Yaklaşan MSDN makalelerimi gözden geçirmek istiyor musunuz? Öyleyse, bana bir satır mitchell@4GuysFromRolla.combırakın.