Bildirim Temelli Parametreler (VB)
Scott Mitchell tarafından
Bu öğreticide, bir DetailsView denetiminde görüntülenecek verileri seçmek için bir parametre kümesinin sabit kodlanmış bir değere nasıl kullanılacağını göstereceğiz.
Giriş
Son öğreticide ,
ProductsBLL sınıfından
GetProducts() yöntemini çağıran bir ObjectDataSource denetimine bağlanan GridView, DetailsView ve FormView denetimleriyle verileri görüntüleme konusunda baktık.
GetProducts() yöntemi, Northwind veritabanının
Products tablosundaki tüm kayıtlarla doldurulmuş kesin türü belirtilmiş bir DataTable döndürür.
ProductsBLL sınıfı ürünlerin yalnızca alt kümelerini döndürmek için ek yöntemler içerir-
GetProductByProductID(productID),
GetProductsByCategoryID(categoryID)ve
GetProductsBySupplierID(supplierID). Bu üç yöntem, döndürülen ürün bilgilerinin nasıl filtreleneceğini gösteren bir giriş parametresi bekler.
ObjectDataSource, giriş parametreleri bekleyen yöntemleri çağırmak için kullanılabilir, ancak bunu yapmak için bu parametrelerin değerlerinin nereden geldiği belirtilmelidir. Parametre değerleri sabit kodlanmış olabilir veya: QueryString değerleri, oturum değişkenleri, sayfadaki bir Web denetiminin özellik değeri veya diğerleri dahil olmak üzere çeşitli dinamik kaynaklardan gelebilir.
Bu öğreticide, bir parametre kümesinin sabit kodlanmış bir değere nasıl kullanılacağını gösteren bir başlangıç hallelim. Özellikle, belirli bir ürünle ilgili bilgileri görüntüleyen sayfaya bir DetailsView ekleme hakkında bilgi vereceğiz. Bu, Chef Anton 'nin Gumbo karışımı, yani 5
ProductID. Daha sonra, bir Web denetimine göre parametre değerinin nasıl ayarlanacağını öğreneceğiz. Özellikle, kullanıcının bir ülkede yer almasına izin vermek için bir metin kutusu kullanacağız. Bu, sonrasında söz konusu ülkede bulunan tedarikçilerin listesini görmek için bir düğmeye tıklayabilirler.
Sabit kodlanmış bir parametre değeri kullanma
İlk örnek için,
BasicReporting klasöründeki
DeclarativeParams.aspx sayfasına bir DetailsView denetimi ekleyerek başlayın. DetailsView 'un akıllı etiketinde, açılan listeden yeni veri kaynağı> <seçin ve bir ObjectDataSource eklemeyi seçin.
Şekil 1: sayfaya bir ObjectDataSource ekleyin (tam boyutlu görüntüyü görüntülemek için tıklayın)
Bu, ObjectDataSource denetiminin veri kaynağı seçme Sihirbazı ' nı otomatik olarak başlatır. Sihirbazın ilk ekranından
ProductsBLL sınıfını seçin.
Şekil 2:
ProductsBLL sınıfını seçin (tam boyutlu görüntüyü görüntülemek için tıklayın)
GetProductByProductID(productID) yöntemini kullanmak istediğimiz belirli bir ürünle ilgili bilgileri göstermek istiyoruz.
Şekil 3:
GetProductByProductID(productID) yöntemini seçin (tam boyutlu görüntüyü görüntülemek için tıklayın)
Seçtiğimiz Yöntem bir parametre içerdiğinden, sihirbazda kullanılacak değeri tanımlamanız istentiğimiz için, sihirbaza yönelik bir ekran daha vardır. Sol taraftaki listede, seçilen yöntemin tüm parametreleri gösterilir.
GetProductByProductID(productID) için yalnızca bir
productIDvardır. Sağ tarafta seçili parametre için değeri belirtebilir. Parametre kaynak açılan listesi, parametre değeri için çeşitli olası kaynakları numaralandırır.
productID parametresi için sabit kodlanmış 5 değeri belirtmek istediğimiz için, parametre kaynağını yok olarak bırakın ve DefaultValue metin kutusuna 5 girin.
Şekil 4:
productID parametresi Için 5 sabit kodlanmış bir parametre değeri kullanılır (tam boyutlu görüntüyü görüntülemek için tıklayın)
Veri kaynağı Yapılandırma Sihirbazı 'nı tamamladıktan sonra, ObjectDataSource denetiminin bildirim temelli biçimlendirmesi,
SelectMethod özelliğinde tanımlanan yöntemin her biri için
SelectParameters koleksiyonundaki bir
Parameter nesnesi içerir. Bu örnekte kullandığımız yöntem yalnızca tek bir giriş parametresi beklediği için
parameterID, burada yalnızca bir giriş vardır.
SelectParameters koleksiyonu
System.Web.UI.WebControls ad alanındaki
Parameter sınıfından türetilen herhangi bir sınıfı içerebilir. Sabit kodlanmış parametre değerleri için temel
Parameter sınıfı kullanılır, ancak diğer parametre kaynağı seçenekleri için türetilmiş bir
Parameter sınıfı kullanılır; gerekirse kendi özel parametre türlerinizide oluşturabilirsiniz.
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetProductByProductID" TypeName="ProductsBLL"> <SelectParameters> <asp:Parameter DefaultValue="5" Name="productID" Type="Int32" /> </SelectParameters> </asp:ObjectDataSource>
Note
Kendi bilgisayarınızda takip ediyorsanız, bu noktada gördüğünüz bildirime dayalı biçimlendirme
InsertMethod,
UpdateMethodve
DeleteMethod özelliklerinin yanı sıra
DeleteParametersiçin değerler içerebilir. ObjectDataSource 'un veri kaynağı seçme Sihirbazı, ekleme, güncelleştirme ve silme için kullanılacak
ProductBLL yöntemlerini otomatik olarak belirtir, bu nedenle açıkça silinmediğiniz takdirde yukarıdaki biçimlendirmeye dahil edilir.
Bu sayfayı ziyaret ederken, veri Web denetimi ObjectDataSource 'un
Select yöntemini çağırır. Bu,
productID giriş parametresi için sabit kodlanmış 5 değerini kullanarak
ProductsBLL sınıfının
GetProductByProductID(productID) yöntemini çağıracaktır. Yöntemi, Chef Anton 'nin Gumbo karışımı (
ProductID 5 ile ürün) hakkında bilgi içeren, kesin olarak belirlenmiş
ProductDataTable bir nesne döndürür.
Şekil 5: Chef Anton 'Nin Gumbo karışımı hakkında bilgi görüntülenir (tam boyutlu görüntüyü görüntülemek için tıklayın)
Parametre değerini bir Web denetiminin özellik değerine ayarlama
ObjectDataSource 'un parametre değerleri, sayfadaki bir Web denetiminin değerine göre de ayarlanabilir. Bunu göstermek için, Kullanıcı tarafından belirtilen bir ülkede bulunan tüm tedarikçileri listeleyen bir GridView 'e sahip olalım. Bu başlatmayı başarmak için, kullanıcının bir ülke adı girebileceği sayfaya bir metin kutusu ekleyin. Bu TextBox denetiminin
ID özelliğini
CountryNameolarak ayarlayın. Ayrıca bir düğme web denetimi de ekleyin.
Şekil 6:
ID
CountryName ile sayfaya bir TextBox ekleyin (tam boyutlu görüntüyü görüntülemek için tıklayın)
Sonra, sayfaya bir GridView ekleyin ve akıllı etiketinden yeni bir ObjectDataSource eklemek için öğesini seçin. Üretici bilgilerini göstermek istediğimiz için sihirbazın ilk ekranından
SuppliersBLL sınıfını seçin. İkinci ekrandan
GetSuppliersByCountry(country) yöntemini seçin.
Şekil 7:
GetSuppliersByCountry(country) yöntemini seçin (tam boyutlu görüntüyü görüntülemek için tıklayın)
GetSuppliersByCountry(country) yönteminde bir giriş parametresi bulunduğundan, sihirbaz bir kez daha yeniden parametre değeri seçmeye yönelik son bir ekran içerir. Bu kez, parametre kaynağını denetim olarak ayarlayın. Bu, ControlID açılan listesini sayfadaki denetimlerin adlarıyla dolduracaktır; listeden
CountryName denetimini seçin. Sayfa ilk kez ziyaret edildiğinde
CountryName metin kutusu boş olur, bu nedenle hiçbir sonuç döndürülmez ve hiçbir şey gösterilmez. Bazı sonuçları varsayılan olarak göstermek istiyorsanız, DefaultValue metin kutusunu uygun şekilde ayarlayın.
Şekil 8: parametre değerini
CountryName denetim değerine ayarlayın (tam boyutlu görüntüyü görüntülemek için tıklayın)
ObjectDataSource 'un bildirim temelli biçimlendirmesi, standart
Parameter nesnesi yerine ControlParameter kullanılarak ilk örneğimizden biraz farklılık gösterir.
ControlParameter, Web denetiminin
ID belirtmek için ek özelliklere ve parametresi için kullanılacak özellik değerine sahiptir (
PropertyName). Veri kaynağı Yapılandırma Sihirbazı, bir metin kutusu için büyük olasılıkla parametre değeri için
Text özelliğini kullanmak isteyeceğiz. Ancak, Web denetiminden farklı bir özellik değeri kullanmak isterseniz,
PropertyName değerini buradan değiştirebilir veya sihirbazdaki "Gelişmiş özellikleri göster" bağlantısına tıklayabilirsiniz.
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="GetSuppliersByCountry" TypeName="SuppliersBLL"> <SelectParameters> <asp:ControlParameter ControlID="CountryName" Name="country" PropertyName="Text" Type="String" /> </SelectParameters> </asp:ObjectDataSource>
CountryName metin kutusu boş olduğunda sayfa ilk kez ziyaret edildiğinde. ObjectDataSource 'un
Select yöntemi GridView tarafından hala çağrılır, ancak
Nothing değeri
GetSuppliersByCountry(country) yöntemine geçirilir. TableAdapter
Nothing bir veritabanı
NULL değerine (
DBNull.Value) dönüştürür, ancak
GetSuppliersByCountry(country) yöntemi tarafından kullanılan sorgu
NULL parametresi için bir
@CategoryID değeri belirtildiğinde herhangi bir değer döndürmüyor şekilde yazılır. Kısacası, hiçbir üretici döndürülmez.
Ziyaretçi bir ülkeye girdiğinde ve geri göndermeye neden olacak şekilde tedarikçileri göster düğmesine tıkladıktan sonra, ObjectDataSource 'un
Select yöntemi yeniden çağrılır ve bu, TextBox denetiminin
Text değerini
country parametresi olarak geçirerek yeniden sorgular.
Şekil 9: Kanada 'Daki tedarikçiler gösterilir (tam boyutlu görüntüyü görüntülemek için tıklayın)
Tüm tedarikçileri varsayılan olarak gösterme
İlk olarak sayfayı görüntülerken tedarikçilerinin hiçbirini göstermek yerine, ilk olarak Tüm tedarikçileri göstermek istiyoruz. böylece, metin kutusuna bir ülke adı girerek kullanıcının listeyi yavaşlayabilmesini sağlar. TextBox boş olduğunda,
SuppliersBLL sınıfın
GetSuppliersByCountry(country) yöntemi
country giriş parametresi için
Nothing geçirilir. Bu
Nothing değer daha sonra DAL
GetSupplierByCountry(country) yöntemine geçirilir ve burada, aşağıdaki sorgudaki
@Country parametresi için bir veritabanı
NULL değerine çevrilir:
SELECT SupplierID, CompanyName, Address, City, Country, Phone FROM Suppliers WHERE Country = @Country
Country = NULL ifadesi her zaman,
Country sütunu
NULL değere sahip olan kayıtlar için de false döndürür; Bu nedenle, hiçbir kayıt döndürülmez.
Ülke metin kutusu boş olduğunda Tüm tedarikçileri döndürmek IÇIN, BLL 'deki
GetSuppliersByCountry(country) yöntemi, ülke parametresi
Nothing ve diğer bir DEYIŞLE, dal
GetSuppliersByCountry(country) yöntemini çağırmak için
GetSuppliers() metodunu artırabilir. Bu, ülke belirtilmediğinde tüm tedarikçileri döndürme ve ülke parametresi dahil, tedarikçinin uygun alt kümesini döndürür.
SuppliersBLL sınıfındaki
GetSuppliersByCountry(country) yöntemini aşağıdaki şekilde değiştirin:
Public Function GetSuppliersByCountry(country As String) _ As Northwind.SuppliersDataTable If String.IsNullOrEmpty(country) Then Return GetSuppliers() Else Return Adapter.GetSuppliersByCountry(country) End If End Function
Bu değişiklik ile
DeclarativeParams.aspx sayfası, ilk ziyaret edildiğinde (veya
CountryName metin kutusu boş olduğunda) tüm tedarikçileri gösterir.
Şekil 10: tüm tedarikçiler artık varsayılan olarak gösteriliyor (tam boyutlu görüntüyü görüntülemek için tıklatın)
Özet
Yöntemleri giriş parametreleriyle birlikte kullanmak için, ObjectDataSource 'un
SelectParameters koleksiyonundaki parametrelerin değerlerini belirtmemiz gerekir. Farklı parametre türleri, parametre değerinin farklı kaynaklardan elde edilebilir olmasını sağlar. Varsayılan parametre türü, sabit kodlanmış bir değer kullanır, ancak kolayca (bir kod satırı olmadan) parametre değerleri, sayfada Web denetimlerinin QueryString, oturum değişkenleri, tanımlama bilgileri ve hatta Kullanıcı tarafından girilen değerlerden elde edilebilir.
Bu öğreticide, bildirim temelli parametre değerlerinin nasıl kullanılacağını gösteren örnekler. Ancak, geçerli tarih ve saat gibi mevcut olmayan bir parametre kaynağı kullanmanın veya sitemizin üyeliği kullanıyorsa, ziyaretçi Kullanıcı KIMLIĞI gibi durumlar olabilir. Bu tür senaryolarda, temel nesnenin metodunu çağıran ObjectDataSource 'tan önce parametre değerlerini program aracılığıyla ayarlayabiliriz. Bunu bir sonraki öğreticidenasıl gerçekleştireceğinizi öğreneceğiz.
Programlamanın kutlu olsun!
Yazar hakkında
4GuysFromRolla.com 'in, Scott Mitchell, yedi ASP/ASP. net books ve 'in yazarı, 1998 sürümünden bu yana Microsoft Web teknolojileriyle çalışmaktadır. Scott bağımsız danışman, Trainer ve yazıcı olarak çalışıyor. En son kitabı, 24 saat içinde ASP.NET 2,0 kendi kendinize eğitimister. email@example.com erişilebilir . ya da blog aracılığıyla http://ScottOnWriting.NETbulabilirsiniz.
Özel olarak teşekkürler
Bu öğretici serisi birçok yararlı gözden geçirenler tarafından incelendi. Bu öğretici için müşteri adayı gözden geçireni Giesenow. Yaklaşan MSDN makalelerimi gözden geçiriyor musunuz? Öyleyse, firstname.lastname@example.org satır bırakın .