Aracılığıyla paylaş


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

tarafından Scott Mitchell

PDF'i indirin

Bu eğitimde, DAL ve BLL'mize tek bir giriş parametresini kabul eden ve veri döndüren bir yöntem eklemeye bakacağız. Örnek, bu parametreyi programlı olarak ayarlayacaktır.

Giriş

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

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

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

ObjectDataSource'un Selected ve Selecting olayları, temel alınan nesnenin yöntemi çağrılmadan önce ve sonra tetiklenir

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

Bu eğitimde, DAL ve BLL'mize tek bir giriş parametresi Monthkabul eden ve belirtilen türde int işe alım yıldönümü EmployeesDataTableolan çalışanlarla doldurulmuş bir Month nesne döndüren bir yöntem eklemeye bakacağız. Örneğimiz, bu parametreyi geçerli aya göre programlı olarak ayarlayacak ve "Bu Ay Çalışan Yıldönümleri" listesini gösterecektir.

Haydi başlayalım!

Adım 1: Bir Yöntem EklemeEmployeesTableAdapter

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

EmployeesTableAdapter'a yeni bir sorgu ekleme

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

Satır döndüren bir SQL deyimi eklemeyi seçin. Specify a SELECT Statement (Bir Deyim Belirtin) ekranına ulaştığınızda, için SELECT varsayılan EmployeesTableAdapter deyim zaten yüklenmiş olacaktır. Basitçe şu WHERE maddeyi ekleyin: WHERE DATEPART(m, HireDate) = @Month. DATEPART, bir datetime türün belirli bir tarih bölümünü döndüren bir T-SQL işlevidir; bu örnekte sütunun DATEPART ayını döndürmek için kullanıyoruzHireDate.

Yalnızca HireDate Sütununun <span class=@HiredBeforeDate Parametresi Değerinden Küçük veya Ona Eşit Olduğu Satırları Döndür" no-loc" dir="ltr" lang="en-us" data-linktype="relative-path">

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

Son olarak, ve FillBy yöntem adlarını sırasıyla ve GetDataByolarak FillByHiredDateMonth değiştirinGetEmployeesByHiredDateMonth.

FillBy ve GetDataBy'den daha uygun yöntem adları seçin

Şekil 4: ve FillBy Değerinden Daha Uygun Yöntem Adları Seçin GetDataBy (Tam boyutlu görüntüyü görüntülemek için tıklayın)

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

Yeni yöntemler veri kümesinin tasarım yüzeyinde görünür

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

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

Uygulama mimarimiz iş mantığı ve veri erişim mantığı için ayrı bir katman kullandığından, belirli bir tarihten önce işe alınan çalışanları almak için BLL'mize DAL'a çağrı yapan bir yöntem eklememiz gerekiyor. EmployeesBLL.cs Dosyayı 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, GetEmployeesByHiredDateMonth(month) basitçe DAL'ı çağırır ve sonuçları döndürür.

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östermektir. Klasördeki ProgrammaticParams.aspx sayfaya bir GridView BasicReporting ekleyerek başlayın ve veri kaynağı olarak yeni bir ObjectDataSource ekleyin. ObjectDataSource'u EmployeesBLL , olarak ayarlanmış sınıfı SelectMethod kullanacak ş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(month) yönteminden seçin

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

Son ekran, parametre değerinin kaynağını sağlamamızı month ister. Bu değeri programlı olarak ayarlayacağımız için Parameter source'u varsayılan None seçeneğine ayarlı bırakın ve Finish'e tıklayın.

Parametre kaynağını Yok olarak bırakın

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

Bu, ObjectDataSource Parameter koleksiyonunda belirtilen bir değere sahip olmayan bir SelectParameters nesne oluşturur.

<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 programlı olarak ayarlamak için, ObjectDataSource'un olayı için bir olay işleyicisi Selecting 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'u seçin, Özellikler penceresine gidin ve şimşek simgesini tıklayın. Ardından, olayın yanındaki Selecting metin kutusuna çift tıklayın veya kullanmak istediğiniz olay işleyicisinin adını yazın.

Bir web denetiminin olaylarını listelemek için Özellikler penceresindeki şimşek simgesine tıklayın

Şekil 9: Bir web denetiminin olaylarını listelemek için Özellikler penceresindeki şimşek simgesine tıklayın

Her iki yaklaşım da ObjectDataSource'un Selecting olayı için sayfanın arka plan kod sınıfına yeni bir olay işleyicisi ekler. Bu olay işleyicisinde, etiketteki özniteliğin e.InputParameters[parameterName] değeri olan 'parameterNameyi kullanarak Nameparametre değerlerini okuyabilir ve yazabiliriz (<asp:Parameter>koleksiyon, 'deki InputParametersgibi sıralı olarak da dizine e.InputParameters[index] eklenebilir). Parametreyi 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ı aracılığıyla ziyaret ettiğimizde, bu ay (Mart) yalnızca bir çalışanın işe alındığını görebiliriz: 1994'ten beri şirkette olan Laura Callahan.

Bu ayın yıldönümleri gösterilen çalışanlar

Şekil 10: Bu Ayın 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'un parametrelerinin değerleri genellikle bir kod satırı gerektirmeden bildirimli olarak ayarlanabilirken, parametre değerlerini programlı olarak ayarlamak kolaydır. Tek yapmamız gereken, temel alınan nesnenin yöntemi çağrılmadan önce tetiklenen ObjectDataSource Selecting olayı için bir olay işleyicisi oluşturmak ve koleksiyon aracılığıyla bir veya daha fazla parametrenin değerlerini el ile ayarlamaktır InputParameters .

Bu eğitim, Temel Raporlama bölümünü sonlandırır. Sonraki öğretici, ziyaretçinin verileri filtrelemesine ve bir ana rapordan ayrıntılar raporuna detaya gitmesine olanak tanıyan tekniklere bakacağımız Filtreleme ve Master-Details Senaryoları bölümünü başlatır.

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ışır. Son kitabı Sams Teach Yourself ASP.NET 24 Hours 2.0'dır. Ona adresinden mitchell@4GuysFromRolla.comulaşabilirsiniz.

Özel Teşekkürler

Bu eğitim serisi, birçok yararlı kişi tarafından incelendi. Bu öğreticinin baş gözden geçireni Hilton Giesenow oldu. Yaklaşan MSDN makalelerimi gözden geçirmek istiyor musunuz? Öyleyse, mitchell@4GuysFromRolla.com'a bir mesaj bırakın.