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 öğ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.
Ş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.
Ş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.
Ş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 productID
var. 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.
Ş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, parameterID
burada 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 , InsertMethod
ve UpdateMethod
özelliklerinin yanı sıra DeleteMethod
değerlerini DeleteParameters
de 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 ProductsBLL
GetProductByProductID(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.
Ş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/bölgede bulunan tüm tedarikçileri listeleyen bir GridView'a sahip olalım. Bu başlangıcı gerçekleştirmek için kullanıcının ülke/ülke adını girebileceği sayfaya bir TextBox ekleyin. Bu TextBox denetiminin ID
özelliğini olarak CountryName
ayarlayın. Ayrıca Düğme Web denetimi de ekleyin.
Şekil 6: Ile ID
CountryName
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.
Ş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.
Ş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 null
bir değeri GetSuppliersByCountry(country)
geçirilir. TableAdapter öğesini bir veritabanı null
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 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 parametre olarak TextBox denetiminin Text
country
değeri geçirilir.
Ş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/bölge adı girerek listeyi ayrıştırmasını sağlarız. TextBox boş olduğunda, sınıfın SuppliersBLL
GetSuppliersByCountry(country)
yöntemi giriş parametresi için null
bir country
değere geçirilir. Bu null
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 Northwind.SuppliersDataTable GetSuppliersByCountry(string country)
{
if (string.IsNullOrEmpty(country))
return GetSuppliers();
else
return Adapter.GetSuppliersByCountry(country);
}
Bu değişiklikle DeclarativeParams.aspx
, sayfa ilk ziyaret edildiğinde (veya CountryName
TextBox 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ı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.