ObjectDataSource Parametre Değerlerini Programlı Olarak Ayarlama (C#)
tarafından Scott Mitchell
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.
Ş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 Month
int
kabul eden ve belirtilen Month
iç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.
Ş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
.
Ş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 GetEmployeesByHiredDateMonth
olarak değiştirinFillBy
.GetDataBy
Şekil 4: Ve'den FillBy
GetDataBy
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.
Ş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.aspx
BasicReporting
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.
Şekil 6: Sınıfı kullanma EmployeesBLL
(Tam boyutlu görüntüyü görüntülemek için tıklayın)
Ş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.
Ş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.
Ş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 (InputParameters
koleksiyon, 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.
Ş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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin