Bildirim Temelli Parametreler (VB)

Scott Mitchell tarafından

Örnek uygulamayı indirin veya PDF 'yi indirin

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.

Sayfaya bir ObjectDataSource eklemek

Ş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.

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.

GetProductByProductID (ProductID) yöntemini seçin

Ş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.

ProductID parametresi için sabit kodlanmış bir parametre değeri olarak 5 kullanılır

Ş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.

Chef Anton 'nin Gumbo karışımı hakkında bilgi görüntülenir

Ş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.

ID adlı sayfaya bir TextBox 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.

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.

parametre değerini CountryName denetim değeri olarak 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.

Kanada 'daki bu tedarikçiler gösteriliyor

Ş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.

tüm tedarikçiler artık varsayılan olarak gösteriliyor

Ş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. mitchell@4GuysFromRolla.comadresinden 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, benimitchell@4GuysFromRolla.combir satır bırakın .