Bir DropDownList ile Ana/Ayrıntı Filtreleme (VB)

Scott Mitchell tarafından

Örnek uygulamayı indirin veya PDF 'yi indirin

Bu öğreticide, bir DropDownList denetimindeki ana kayıtları ve bir GridView 'da seçilen liste öğesinin ayrıntılarını göreceksiniz.

Giriş

Ortak bir rapor türü, raporun ilk "ana" kayıt kümesini göstererek başladığı ana/ayrıntı raporlarıdır. Kullanıcı daha sonra Ana kayıtlardan birinin detayına gidebilir ve bu sayede ana kaydın "ayrıntılarını" görüntülüyor olabilir. Ana/ayrıntı raporları, tüm kategorileri gösteren bir rapor ve sonra bir kullanıcının belirli bir kategoriyi seçmesini ve ilişkili ürünlerini görüntülemesini sağlamak gibi bir-çok ilişkiyi görselleştirmeye yönelik ideal bir seçimdir. Ayrıca, ana/ayrıntı raporları, özellikle "geniş" tablolardan (çok sütun içeren) ayrıntılı bilgileri görüntülemek için yararlıdır. Örneğin, ana/ayrıntı raporunun "ana" düzeyi, veritabanındaki ürünlerin yalnızca ürün adını ve birim fiyatını gösterebilir ve belirli bir üründe ayrıntıya gitme ek ürün alanlarını (kategori, tedarikçi, birim başına miktar vb.) gösterebilir.

Ana/ayrıntı raporunun uygulanbileceği birçok yol vardır. Bu ve sonraki üç öğreticilerde, çeşitli ana/ayrıntı raporlarına bakacağız. Bu öğreticide, bir DropDownList denetimindeki ana kayıtları ve bir GridView 'da seçilen liste öğesinin ayrıntılarını göreceksiniz. Özellikle, Bu öğreticinin ana/ayrıntı raporu, kategori ve ürün bilgilerini listeler.

1. Adım: bir DropDownList içindeki kategorileri görüntüleme

Ana/ayrıntı raporumuz, seçilen liste öğesinin ürünlerini bir GridView 'daki sayfada daha aşağı görüntülenecek şekilde bir DropDownList içindeki kategorileri listeleyecektir. İlk görevinin önünde ve sonra, kategorilerin bir DropDownList içinde gösterilmesi gerekir. Filtering klasöründeki FilterByDropDownList.aspx sayfasını açın, araç kutusu 'ndaki bir DropDownList 'e sayfanın tasarımcısına sürükleyin ve ID özelliğini Categoriesolarak ayarlayın. Sonra, DropDownList 'in akıllı etiketindeki veri kaynağı Seç bağlantısına tıklayın. Bu, veri kaynağı Yapılandırma Sihirbazı 'nı görüntüler.

DropDownList 'in veri kaynağını belirtmek

Şekil 1: DropDownList 'In veri kaynağını belirtin (tam boyutlu görüntüyü görüntülemek için tıklayın)

CategoriesBLL sınıfının GetCategories() yöntemini çağıran CategoriesDataSource adlı yeni bir ObjectDataSource eklemeyi seçin.

CategoriesDataSource adlı yeni bir ObjectDataSource ekleyin

Şekil 2: CategoriesDataSource adlı yeni bir ObjectDataSource ekleyin (tam boyutlu görüntüyü görüntülemek için tıklayın)

Kategorilerbll sınıfını kullanmayı seçin

Şekil 3: CategoriesBLL sınıfını kullanmayı seçin (tam boyutlu görüntüyü görüntülemek için tıklayın)

, GetCategories () yöntemini kullanmak için ObjectDataSource 'ı yapılandırma

Şekil 4: GetCategories() yöntemini kullanmak için ObjectDataSource 'ı yapılandırın (tam boyutlu görüntüyü görüntülemek için tıklayın)

ObjectDataSource yapılandırıldıktan sonra yine de, DropDownList 'de hangi veri kaynağı alanının gösterileceğini ve hangi birinin liste öğesi için değer olarak ilişkilendirilmesi gerektiğini belirtmemiz gerekir. CategoryName alanı görüntüleme ve her liste öğesi için değer olarak CategoryID.

DropDownList 'In CategoryName alanını görüntülemesi ve değer olarak CategoryID 'yi kullanması

Şekil 5: DropDownList 'In CategoryName alanı göstermesini ve değer olarak CategoryID kullanmasınaizin vermek (tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu noktada, Categories tablodaki kayıtlarla doldurulmuş bir DropDownList denetimine sahip olduğumuz (hepsi yaklaşık altı saniye içinde gerçekleştirilir). Şekil 6 ' da bir tarayıcıdan görüntülendiklerinde ilerleme durumunu gösterir.

aşağı açılan liste geçerli Kategoriler

Şekil 6: bir açılan listede geçerli Kategoriler listelenir (tam boyutlu görüntüyü görüntülemek için tıklayın)

2. Adım: ürünü ekleme GridView

Ana/ayrıntı raporumuzdaki ilgili son adım, seçili kategoriyle ilişkili ürünleri listelerimize göre belirlenir. Bunu gerçekleştirmek için, sayfaya bir GridView ekleyin ve productsDataSourceadlı yeni bir ObjectDataSource oluşturun. productsDataSource denetiminin verilerini ProductsBLL sınıfının GetProductsByCategoryID(categoryID) yönteminden Cull yapın.

Getproductsbycategoryıd (CategoryID) yöntemini seçin

Şekil 7: GetProductsByCategoryID(categoryID) yöntemini seçin (tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu yöntemi seçtikten sonra, ObjectDataSource Sihirbazı yöntemin categoryID parametresine ilişkin değeri ister. Seçili categories DropDownList öğesinin değerini kullanmak için parametre kaynağını denetim ve ControlID Categoriesolarak ayarlayın.

CategoryID parametresini DropDownList kategorisinin değerine ayarlayın

Şekil 8: categoryID parametresini Categories DropDownList değeri olarak ayarlayın (tam boyutlu görüntüyü görüntülemek için tıklayın)

Bir tarayıcıda ilerleme durumunu kontrol etmek için bir dakikanızı ayırın. Sayfayı ilk ziyaret edildiğinde, bu ürünler seçili kategoriye (alkoller) ait (Şekil 9 ' da gösterildiği gibi) görüntülenir, ancak DropDownList 'in değiştirilmesi verileri güncelleştirmez. Bunun nedeni, GridView 'in güncelleştirilmesi için bir geri gönderme oluşması gerekir. Bunu gerçekleştirmek için iki seçeneğiniz vardır (hiçbiri hiçbir kod yazmak zorunda değildir):

  • Kategori DropDownListAutoPostBack özelliğinitrue olarak ayarlayın. (Bunu, DropDownList 'in akıllı etiketinde AutoPostBack seçeneğini etkinleştir seçeneğini işaretleyerek gerçekleştirebilirsiniz.) Bu, DropDownList 'in seçili öğesi Kullanıcı tarafından değiştirildiğinde bir geri gönderme tetikleyecektir. Bu nedenle, Kullanıcı DropDownList 'den yeni bir kategori seçtiğinde geri gönderme, yeni seçilen kategorinin ürünleriyle güncelleştirilir. (Bu öğreticide kullandığım yaklaşım budur.)
  • DropDownList 'in yanına bir düğme web denetimi ekleyin. Text özelliğini Yenile veya benzer bir şekilde ayarlayın. Bu yaklaşımda, kullanıcının yeni bir kategori seçip düğmesine tıklamalıdır. Düğmeye tıkladığınızda geri göndermeye neden olur ve GridView, seçilen kategorinin bu ürünlerini listelemek için güncelleştirilecek.

Şekil 9 ve 10, işlem içindeki ana/ayrıntı raporunu gösterir.

Sayfa Ilk ziyaret edildiğinde , beden Içecek ürünleri görüntülenir

Şekil 9: sayfayı ilk ziyaret edildiğinde, Beiçecek ürünleri görüntülenir (tam boyutlu görüntüyü görüntülemek için tıklayın)

Yeni bir ürünün seçilmesi (üretim) otomatik olarak bir geri göndermeye neden olur, GridView güncelleştiriliyor

Şekil 10: yeni bir ürünün seçilmesi (üretim) otomatik olarak bir geri göndermeye neden olur, GridView güncelleştiriliyor (tam boyutlu görüntüyü görüntülemek için tıklatın)

"--Kategori seçme--" liste öğesi ekleme

FilterByDropDownList.aspx sayfası ilk kez ziyaret edildiğinde, kategori DropDownList 'in ilk liste öğesi (alkolu) varsayılan olarak seçilidir ve GridView 'daki Iiçecek ürünlerini gösterir. İlk kategorinin ürünlerini göstermek yerine, "--kategori seçin--" gibi bir DropDownList öğesi seçilmelidir.

DropDownList 'e yeni bir liste öğesi eklemek için Özellikler penceresi gidin ve Items özelliğindeki üç noktaya tıklayın. Text "--kategori seçin--" ve Value -1yeni bir liste öğesi ekleyin.

ekleyin--Kategori seçin--liste öğesi

Şekil 11: Ekle--Kategori seçin--liste öğesi (tam boyutlu görüntüyü görüntülemek için tıklatın)

Alternatif olarak, aşağıdaki işaretlemeyi DropDownList öğesine ekleyerek liste öğesini ekleyebilirsiniz:

<asp:DropDownList ID="categories" runat="server"
    AutoPostBack="True" DataSourceID="categoriesDataSource"
    DataTextField="CategoryName" DataValueField="CategoryID"
    EnableViewState="False">
    <asp:ListItem Value="-1">
       -- Choose a Category --
    </asp:ListItem>
</asp:DropDownList>

Ayrıca, Kategoriler denetimin DropDownList 'e bağlandığı, AppendDataBoundItems doğru değilse, el ile eklenen liste öğelerinin üzerine yazabiledikleri için DropDownList denetiminin AppendDataBoundItems true olarak ayarlanmaları gerekir.

AppendDataBoundItems özelliğini true olarak ayarlayın

Şekil 12: AppendDataBoundItems özelliğini true olarak ayarlayın

Bu değişikliklerden sonra, ilk olarak "--kategori seçin--" seçeneği seçilidir ve hiçbir ürün gösterilmez.

Ilk sayfa yükleme hiçbir ürün gösterilmez

Şekil 13: Ilk sayfa yükleme sayfasında hiçbir ürün gösterilmez (tam boyutlu görüntüyü görüntülemek için tıklayın)

"--Kategori Seç--" liste öğesi seçili olduğu için hiçbir ürünün görüntülenmediği nedeni, değeri -1 ve veritabanında -1``CategoryID bir ürün yok. İstediğiniz davranış bu ise, bu noktada işiniz istenir! Bununla birlikte, "--Kategori Seç--" liste öğesi seçili olduğunda kategorilerin Tümünü göstermek istiyorsanız, ProductsBLL sınıfına geri dönün ve GetProductsByCategoryID(categoryID) yöntemini, geçirilen categoryID parametresi sıfırdan küçükse GetProducts() yöntemini çağırır şekilde özelleştirin:

Public Function GetProductsByCategoryID(categoryID As Integer) _
    As Northwind.ProductsDataTable
    If categoryID < 0 Then
        Return GetProducts()
    Else
        Return Adapter.GetProductsByCategoryID(categoryID)
    End If
End Function

Burada kullanılan teknik, bildirim temelli parametreler öğreticisinde tüm tedarikçileri geri göstermek için kullandığımız yaklaşıma benzer, ancak bu örnekte, tüm kayıtların Nothingaksine alınması gerektiğini göstermek için bir -1 değeri kullanıyoruz. Bunun nedeni, GetProductsByCategoryID(categoryID) yönteminin categoryID parametresinin, bir dize giriş parametresine geçirdiğimiz bildirim temelli parametreler öğreticisinde iletilen tamsayı değeri olmasını bekler.

Şekil 14 ' te, "--kategori seçin--" seçeneği belirlendiğinde FilterByDropDownList.aspx ekran görüntüsü gösterilir. Burada, tüm ürünler varsayılan olarak görüntülenir ve Kullanıcı, belirli bir kategoriyi seçerek ekranı daraltabilirler.

Tüm ürünlerin artık varsayılan olarak listelenmiştir

Şekil 14: tüm ürünler artık varsayılan olarak listelenir (tam boyutlu görüntüyü görüntülemek için tıklayın)

Özet

Hiyerarşik olarak ilgili verileri görüntülerken, genellikle kullanıcının hiyerarşinin en üstündeki verileri kullanarak başlayabileceği ana/ayrıntı raporlarını kullanarak verileri sunmak ve ayrıntılarda ayrıntıya inmek için yardımcı olur. Bu öğreticide, seçilen kategorinin ürünlerini gösteren basit bir ana/ayrıntı raporu oluşturmayı inceledik. Bu, kategorilerin listesi için bir DropDownList ve seçilen kategoriye ait ürünler için bir GridView kullanılarak gerçekleştirildi.

Sonraki öğreticide , Iki Dropdownlists kullanarak DropDownList arabirimini bir adım daha devam eteceğ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.