Aracılığıyla paylaş


Bildirim Temelli Parametreler (VB)

tarafından Scott Mitchell

PDF'i indirin

Bu öğreticide, detailsView denetiminde görüntülenecek verileri seçmek için sabit kodlanmış bir değere ayarlanmış bir parametrenin nasıl kullanılacağını göstereceğiz.

Giriş

Son öğreticide GridView, DetailsView ve FormView denetimleriyle verileri görüntülemeyi gözden geçirdik. Sınıftan GetProducts() yöntemini çağıran bir ObjectDataSource denetimine ProductsBLL bağlı. yöntemi, GetProducts() Northwind veritabanının Products tablosundaki tüm kayıtlarla doldurulmuş güçlü türdeki 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 filtrelendiğ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ğini belirtmemiz gerekir. Parametre değerleri sabit kodlanabilir veya sorgu dizesi değerleri, Oturum değişkenleri, sayfadaki bir Web denetiminin özellik değeri veya diğerleri gibi çeşitli dinamik kaynaklardan gelebilir.

Bu öğretici için, sabit kodlanmış bir değere ayarlanmış bir parametrenin nasıl kullanılacağını göstererek başlayalım. Özellikle sayfaya, Chef Anton'un 5 olan Gumbo Mix adlı belirli bir ürünle ilgili bilgileri görüntüleyen bir ProductID DetailsView ekleme işlemini inceleyeceğiz. Ardından, bir Web denetimine göre parametre değerinin nasıl ayarlandığını göreceğiz. Özellikle, kullanıcının bir ülkede/bölgede yazmasına izin vermek için bir TextBox kullanacağız ve ardından söz konusu ülkede/bölgede bulunan tedarikçilerin listesini görmek için bir Düğme'ye tıklayabilir.

Sabit Kodlanmış Parametre Değeri Kullanma

İlk örnek için, klasördeki DeclarativeParams.aspx sayfaya BasicReporting bir DetailsView denetimi ekleyerek başlayın. DetailsView'un akıllı etiketinden açılan listeden Yeni veri kaynağı'nı< seçin >ve bir ObjectDataSource eklemeyi seçin.

Sayfaya ObjectDataSource Ekleme

Şekil 1: Sayfaya ObjectDataSource Ekleme (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 ProductsBLL ilk ekranından sınıfını seçin.

ProductsBLL Sınıfını seçin

Şekil 2: Sınıfı seçin ProductsBLL (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Belirli bir ürünle ilgili bilgileri görüntülemek istediğimiz için yöntemini kullanmak GetProductByProductID(productID) istiyoruz.

GetProductByProductID(productID) yöntemini seçin

Şekil 3: Yöntemi seçin GetProductByProductID(productID) (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 sihirbaz için bir ekran daha vardır ve burada parametre için kullanılacak değeri tanımlamamız istenir. Soldaki listede seçili yöntem için tüm parametreler gösterilir. Çünkü GetProductByProductID(productID) sadece bir tane productIDvar. Sağdaki seçili parametrenin değerini belirtebiliriz. Parametre kaynağı açılan listesi, parametre değeri için çeşitli olası kaynakları numaralandırır. Parametre için sabit kodlanmış 5 değeri belirtmek istediğimizden productID , Parametre kaynağını Yok olarak bırakın ve DefaultValue metin kutusuna 5 girin.

ProductID Parametresi için Sabit Kodlanmış Parametre Değeri 5 Kullanılacak

Şekil 4: Parametre için productID Sabit Kodlanmış Parametre Değeri 5 Kullanılacak (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Veri Kaynağını Yapılandırma sihirbazı tamamlandıktan sonra ObjectDataSource denetiminin bildirim temelli işaretlemesi, özelliğinde Parameter tanımlanan yöntemi tarafından beklenen giriş parametrelerinin her biri için koleksiyonda SelectParameters bir SelectMethod nesne içerir. Bu örnekte kullanmakta olduğumuz yöntem yalnızca tek bir giriş parametresi beklediğinden, parameterIDburada yalnızca bir giriş vardır. Koleksiyon, SelectParameters ad alanında Parameter sınıfından System.Web.UI.WebControls 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ş Parameter bir sınıf kullanılır; gerekirse kendi özel parametre türlerinizi de oluşturabilirsiniz.

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    SelectMethod="GetProductByProductID" TypeName="ProductsBLL">
    <SelectParameters>
        <asp:Parameter DefaultValue="5"
           Name="productID" Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>

Not

Kendi bilgisayarınızda takip ediyorsanız, bu noktada gördüğünüz bildirim temelli işaretleme , InsertMethodve UpdateMethod özelliklerinin yanı sıra DeleteMethoddeğerlerini DeleteParametersde içerebilir. ObjectDataSource'un Veri Kaynağı Seçme sihirbazı ekleme, güncelleştirme ve silme için kullanılacak yöntemleri ProductBLL otomatik olarak belirtir; bu nedenle bunları açıkça temizlemediğiniz sürece yukarıdaki işaretlemeye eklenirler.

Bu sayfayı ziyaret ederken, veri Web denetimi ObjectDataSource'un Select yöntemini çağırır. Bu yöntem, giriş parametresi için sabit kodlanmış 5 değerini kullanarak sınıfın ProductsBLLGetProductByProductID(productID) yöntemini çağırırproductID. yöntemi, Chef Anton'un Gumbo Mix 'i (5 içeren ürünProductDataTable) hakkındaki bilgileri içeren tek bir satır içeren kesin türe ProductID sahip bir nesne döndürür.

Chef Anton'un Gumbo Mix'i Hakkında Bilgiler Görüntüleniyor

Şekil 5: Chef Anton'un Bamya Karışımı Hakkında Bilgiler Görüntüleniyor (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Parametre Değerini 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'a sahip olalım. Bu başlangıcı, kullanıcının ülke adını girebileceği sayfaya bir TextBox ekleyerek gerçekleştirmek için. Bu TextBox denetiminin ID özelliğini olarak CountryNameayarlayın. Ayrıca Düğme Web denetimi de ekleyin.

CountryName Kimliğine Sahip Sayfaya TextBox Ekleme

Şekil 6: Ile IDCountryName Sayfaya TextBox Ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Ardından sayfaya bir GridView ekleyin ve akıllı etiketten yeni bir ObjectDataSource eklemeyi seçin. Sağlayıcı bilgilerini görüntülemek istediğimiz için sihirbazın SuppliersBLL ilk ekranından sınıfı seçin. İkinci ekrandan GetSuppliersByCountry(country) yöntemini seçin.

GetSuppliersByCountry(ülke) Yöntemini seçin

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

Yöntemin GetSuppliersByCountry(country) giriş parametresi olduğundan, sihirbaz bir kez daha parametre değerini seçmek için son bir ekran içerir. Bu kez Parametre kaynağını Denetim olarak ayarlayın. Bu, ControlID açılan listesini sayfadaki denetimlerin adlarıyla doldurur; listeden CountryName denetimi seçin. Sayfa ilk kez ziyaret CountryName edildiğinde TextBox boş olur, bu nedenle sonuç döndürülür ve hiçbir şey görüntülenmez. Bazı sonuçları varsayılan olarak görüntülemek istiyorsanız, DefaultValue metin kutusunu uygun şekilde ayarlayın.

Parametre Değerini CountryName Denetim Değeri olarak ayarlama

Şekil 8: Parametre Değerini Denetim Değeri olarak CountryName ayarlayın (Tam boyutlu görüntüyü görüntülemek için tıklayın)

ObjectDataSource'un bildirim temelli işaretlemesi, standart nesne yerine ControlParameter Parameter kullanarak ilk örneğimizden biraz farklıdır. A ControlParameter , Web denetiminin ID ve parametresi (PropertyName) için kullanılacak özellik değerini belirtmek için ek özelliklere sahiptir. Veri Kaynağını Yapılandırma sihirbazı, TextBox için parametre değeri için özelliğini kullanmak Text isteyeceğimizi belirleyecek kadar akıllıydı. Ancak, Web denetiminden farklı bir özellik değeri kullanmak istiyorsanız, değeri burada veya sihirbazdaki "Gelişmiş özellikleri göster" bağlantısına tıklayarak değiştirebilirsiniz PropertyName .

<asp:ObjectDataSource ID="ObjectDataSource2" runat="server"
    SelectMethod="GetSuppliersByCountry" TypeName="SuppliersBLL">
    <SelectParameters>
        <asp:ControlParameter ControlID="CountryName"
            Name="country" PropertyName="Text"
            Type="String" />
    </SelectParameters>
</asp:ObjectDataSource>

Sayfayı ilk kez CountryName ziyaret ederken TextBox boş olur. ObjectDataSource'un Select yöntemi Hala GridView tarafından çağrılır, ancak yöntemine Nothing bir değeri GetSuppliersByCountry(country) geçirilir. TableAdapter öğesini bir veritabanı Nothing değerine ()NULL dönüştürürDBNull.Value, ancak yöntemi tarafından GetSuppliersByCountry(country) kullanılan sorgu, parametresi için bir NULL değer belirtildiğinde hiçbir değer döndürmemesi için @CategoryID yazılır. Kısacası hiçbir tedarikçi iade yapılmaz.

Ancak, ziyaretçi bir ülkeye/bölgeye girdikten ve geri göndermeye neden olmak için Sağlayıcıları Göster düğmesine tıkladıktan sonra ObjectDataSource'un Select yöntemi yeniden sorgulanır ve textBox denetiminin Text değeri parametre olarak country geçirilir.

Kanada'dan Bu Tedarikçiler Gösteriliyor

Şekil 9: Kanada'dan Gelen Tedarikçiler Gösteriliyor (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Varsayılan Olarak Tüm Tedarikçileri Gösterme

Sayfayı ilk kez görüntülerken tedarikçilerin hiçbirini göstermemek yerine, ilk başta tüm tedarikçileri göstermek isteyebiliriz ve kullanıcının TextBox'a bir ülke adı girerek listeyi ayrıştırmasına izin verebiliriz. TextBox boş olduğunda, SuppliersBLL sınıfının GetSuppliersByCountry(country) yöntemi giriş parametresi için Nothing geçirilircountry. Bu Nothing değer dal'ın GetSupplierByCountry(country) yöntemine geçirilir ve burada aşağıdaki sorguda parametresi için NULL bir veritabanı @Country değerine çevrilir:

SELECT     SupplierID, CompanyName, Address, City, Country, Phone
FROM         Suppliers
WHERE Country = @Country

İfadeCountry = NULL, sütunu bir değere sahip Country olan NULL kayıtlar için bile her zaman False döndürür; bu nedenle hiçbir kayıt döndürülür.

Ülke TextBox boş olduğunda tüm tedarikçileri döndürmek Bu, ülke belirtilmediğinde tüm tedarikçileri geri döndürmenin ve ülke parametresi dahil edildiğinde tedarikçilerin uygun alt kümesinin döndürülmesini sağlayacaktır.

sınıfındaki GetSuppliersByCountry(country)SuppliersBLL 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şiklikle DeclarativeParams.aspx , sayfa ilk ziyaret edildiğinde (veya CountryName TextBox 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ıklayın)

Özet

Giriş parametreleriyle yöntemleri kullanmak için ObjectDataSource'un SelectParameters koleksiyonundaki parametrelerin değerlerini belirtmemiz gerekir. Farklı parametre türleri, parametre değerinin farklı kaynaklardan alınmasına olanak sağlar. Varsayılan parametre türü sabit kodlanmış bir değer kullanır, ancak sayfadaki Web denetimlerinden sorgu dizesi, Oturum değişkenleri, tanımlama bilgileri ve hatta kullanıcı tarafından girilen değerlerden kolayca (ve kod satırı olmadan) parametre değerleri elde edilebilir.

Bu öğreticide incelediğimiz örneklerde bildirim temelli parametre değerlerinin nasıl kullanılacağı gösterilmiştir. Ancak, mevcut tarih ve saat gibi mevcut olmayan bir parametre kaynağını kullanmamız gereken zamanlar olabilir veya sitemizde Üyelik kullanılıyorsa, ziyaretçinin Kullanıcı Kimliği. Bu tür senaryolar için, ObjectDataSource temel nesnesinin yöntemini çağırmadan önce parametre değerlerini program aracılığıyla ayarlayabiliriz. Sonraki öğreticide bunu nasıl gerçekleştirebileceğimizi göreceğ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ışı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 öğ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, mitchell@4GuysFromRolla.com'a bir mesaj bırakın.