Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
tarafından Scott Mitchell
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
.
Ş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 Month
kabul eden ve belirtilen türde Integer
işe alım yıldönümü EmployeesDataTable
olan ç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.
Ş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
.
Ş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 GetDataBy
olarak FillByHiredDateMonth
değiştirinGetEmployeesByHiredDateMonth
.
Ş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.
Ş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.vb
Dosyayı açın ve aşağıdaki yöntemi ekleyin:
<System.ComponentModel.DataObjectMethodAttribute _
(System.ComponentModel.DataObjectMethodType.Select, False)> _
Public Function GetEmployeesByHiredDateMonth(ByVal month As Integer) _
As Northwind.EmployeesDataTable
Return Adapter.GetEmployeesByHiredDateMonth(month)
End Function
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.
Ş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)
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.
Ş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. Üçüncü bir seçenek olarak, sayfanın arka plan kod sınıfının üst kısmındaki iki açılan listeden ObjectDataSource'u ve olayını Selecting
seçerek olay işleyicisini oluşturabilirsiniz.
Şekil 9: Bir web denetiminin olaylarını listelemek için Özellikler penceresindeki şimşek simgesine tıklayın
Her üç 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 'parameterName
yi kullanarak Name
parametre değerlerini okuyabilir ve yazabiliriz (<asp:Parameter>
koleksiyon, 'deki InputParameters
gibi 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 Sub ObjectDataSource1_Selecting _
(sender As Object, e As ObjectDataSourceSelectingEventArgs) _
Handles ObjectDataSource1.Selecting
e.InputParameters("month") = DateTime.Now.Month
End Sub
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.
Ş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.