中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表

系列文章導(dǎo)航:

ASP.NET 2.0數(shù)據(jù)教程之一:創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)層

ASP.NET 2.0數(shù)據(jù)教程之二:創(chuàng)建一個(gè)業(yè)務(wù)邏輯層

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁(yè)和站點(diǎn)導(dǎo)航

ASP.NET 2.0數(shù)據(jù)教程之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)

ASP.NET 2.0數(shù)據(jù)教程之五:聲明參數(shù)

ASP.NET 2.0數(shù)據(jù)教程之六:編程設(shè)置ObjectDataSource的參數(shù)值

ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之八:使用兩個(gè)DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之九:跨頁(yè)面的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十:使用 GridView 和DetailView實(shí)現(xiàn)的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十一:基于數(shù)據(jù)的自定義格式化

ASP.NET 2.0數(shù)據(jù)教程之十二:在GridView控件中使用TemplateField


導(dǎo)言

  主/從報(bào)表是一種很常見(jiàn)的報(bào)表, 這類(lèi)報(bào)表中首先會(huì)顯示一些主記錄. 然后用戶可以深入(追溯)某條主記錄來(lái)查看該主記錄的詳情. 主/從報(bào)表是顯示一對(duì)多關(guān)系的理想選擇, 比如一個(gè)報(bào)表顯示所有的產(chǎn)品類(lèi)別,然后根據(jù)用戶選擇的特定類(lèi)別顯示與之關(guān)聯(lián)的產(chǎn)品. 另外, 主/從表在顯示”寬”表(有很多列的表)的詳細(xì)信息時(shí)也很有用.例如主/從報(bào)表的主表部分顯示數(shù)據(jù)庫(kù)中產(chǎn)品表的產(chǎn)品名稱(chēng)和單價(jià), 具體到某一個(gè)產(chǎn)品時(shí)再顯示其他的產(chǎn)品字段(類(lèi)別,供應(yīng)商,單位數(shù)量,等等). 

  有很多方法可以實(shí)現(xiàn)主/從報(bào)表. 在這篇及接下來(lái)的3篇教程中我們將看到各種各樣的主/從報(bào)表. 在本篇中我們會(huì)看到如何在DropDownList控件中顯示主記錄以及在GridView中顯示選中數(shù)據(jù)項(xiàng)的詳細(xì)信息. 具體來(lái)說(shuō), 在本篇中主/從報(bào)表將會(huì)列出產(chǎn)類(lèi)別及產(chǎn)品信息.

Step 1: 在DropDownList 中顯示類(lèi)別

  我們的主/從報(bào)表將會(huì)在DropDownList中列出類(lèi)別, 根據(jù)選擇的列表項(xiàng)在頁(yè)面上的GridView顯示相關(guān)的產(chǎn)品. 我們的第一任務(wù), 就是要在DropDownList中顯示類(lèi)別. 打開(kāi)Filtering文件夾中的FilterByDropDownList.ASPx, 從工具箱中將一個(gè)DorpDownList控件拖放在該頁(yè)上, 設(shè)置它的ID屬性為Categories. 然后, 單擊”DropDownList 任務(wù)”上的”選擇數(shù)據(jù)源”鏈接. “選擇數(shù)據(jù)源”向?qū)?dòng).



圖1:指定DropDownList控件的數(shù)據(jù)源

添加一個(gè)數(shù)據(jù)源控件并命名為CategoriesDataSource,該控件將會(huì)調(diào)用CategoriesBLL 類(lèi)的 GetCategories().



圖2: 添加一個(gè)數(shù)據(jù)源控件并命名為CategoriesDataSource

 

系列文章導(dǎo)航:

ASP.NET 2.0數(shù)據(jù)教程之一:創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)層

ASP.NET 2.0數(shù)據(jù)教程之二:創(chuàng)建一個(gè)業(yè)務(wù)邏輯層

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁(yè)和站點(diǎn)導(dǎo)航

ASP.NET 2.0數(shù)據(jù)教程之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)

ASP.NET 2.0數(shù)據(jù)教程之五:聲明參數(shù)

ASP.NET 2.0數(shù)據(jù)教程之六:編程設(shè)置ObjectDataSource的參數(shù)值

ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之八:使用兩個(gè)DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之九:跨頁(yè)面的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十:使用 GridView 和DetailView實(shí)現(xiàn)的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十一:基于數(shù)據(jù)的自定義格式化

ASP.NET 2.0數(shù)據(jù)教程之十二:在GridView控件中使用TemplateField


 



圖3: 選擇使用CategoriesBLL 類(lèi)



圖4: 配置數(shù)據(jù)源控件使用GetCategories() 方法

  配置完ObjectDataSource后還需要指定要在DropDownList中顯示的數(shù)據(jù)字段,以及作為數(shù)據(jù)項(xiàng)的值(value for the list item)的數(shù)據(jù)字段.我們指定CategoryName為要顯示的列, 指定CategoryID為數(shù)據(jù)項(xiàng)的值字段



圖5: 指定CategoryName為要顯示的列, CategoryID作為數(shù)據(jù)項(xiàng)的值。


  這時(shí),我們就有了一個(gè)使用Categories表中的記錄來(lái)填充的DropDownList控件.圖6顯示了在瀏覽器中所看到的目前為止我們所做的工作.



圖6:DropDownList列出了當(dāng)前的類(lèi)別

系列文章導(dǎo)航:

ASP.NET 2.0數(shù)據(jù)教程之一:創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)層

ASP.NET 2.0數(shù)據(jù)教程之二:創(chuàng)建一個(gè)業(yè)務(wù)邏輯層

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁(yè)和站點(diǎn)導(dǎo)航

ASP.NET 2.0數(shù)據(jù)教程之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)

ASP.NET 2.0數(shù)據(jù)教程之五:聲明參數(shù)

ASP.NET 2.0數(shù)據(jù)教程之六:編程設(shè)置ObjectDataSource的參數(shù)值

ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之八:使用兩個(gè)DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之九:跨頁(yè)面的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十:使用 GridView 和DetailView實(shí)現(xiàn)的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十一:基于數(shù)據(jù)的自定義格式化

ASP.NET 2.0數(shù)據(jù)教程之十二:在GridView控件中使用TemplateField


 

Step 2: 添加產(chǎn)品表格

在主/從報(bào)表的最后一步是列出與選定的類(lèi)別相關(guān)聯(lián)的產(chǎn)品. 要實(shí)現(xiàn)該功能,在頁(yè)面上增加一個(gè)GridView控件然后創(chuàng)建一個(gè)數(shù)據(jù)源控件(ObjectDataSource)并命名為productsDataSource.讓productsDataSource控件從ProductsBLL類(lèi)的GetProductsByCategoryID(categoryID)獲取數(shù)據(jù).



圖7: 選擇GetProductsByCategoryID(categoryID) 方法

選擇該方法之后,數(shù)據(jù)源控件(ObjectDataSource)向?qū)?huì)提示我們定義該方法的categoryID參數(shù)值. 要使用categories DorpDownList中選擇的值, 設(shè)置參數(shù)源為Control, 設(shè)置ControlID為Categories.



圖8: categoryID 參數(shù)設(shè)置為Categories DropDownList的值

花一點(diǎn)時(shí)間在瀏覽器中檢查一下我們前面所做的工作. 第一次訪問(wèn)頁(yè)面時(shí),那些屬于已選擇類(lèi)別(Beverages)的產(chǎn)品已經(jīng)顯示出來(lái)了(如圖9), 但是當(dāng)改變DropDownList時(shí)并沒(méi)有更新產(chǎn)品數(shù)據(jù).這是由于必須引發(fā)一次回發(fā)(postback)GridView才會(huì)更新.有兩個(gè)方法可以實(shí)現(xiàn)(兩種方法都不需要寫(xiě)任何代碼):
• 設(shè)置 categories 的AutoPostBack 屬性為 True. (你可以選中DropDownList’s smart tag 上的Enable AutoPostBack 選項(xiàng).) 這樣,
只要用戶改變了DropDownList的選擇項(xiàng)都會(huì)引起一次回發(fā). 所以, 當(dāng)用戶在DropDownList中選擇了一個(gè)新的類(lèi)別就會(huì)引起一次回發(fā),GridView 也會(huì)隨著新選擇的類(lèi)別更新產(chǎn)品數(shù)據(jù). (在本教程中我們使用此方法.)
• DropDownList后面添加一個(gè)按鈕控件.  設(shè)置他的Text 屬性為”刷新”或類(lèi)似的文本.使用這種方法, 用戶需要選擇一個(gè)新的類(lèi)別然后單擊該按鈕.單擊按鈕將會(huì)引起一次回發(fā)并更新GridView顯示已選擇類(lèi)別的產(chǎn)品.圖9和圖10演示了運(yùn)行后的主/從報(bào)表.



圖9: 第一次訪問(wèn)該頁(yè)面時(shí), 顯示Beverage 的產(chǎn)品



圖10: 選擇一個(gè)新的產(chǎn)品,自動(dòng)引起一次回發(fā)并更新GridView

 

系列文章導(dǎo)航:

ASP.NET 2.0數(shù)據(jù)教程之一:創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)層

ASP.NET 2.0數(shù)據(jù)教程之二:創(chuàng)建一個(gè)業(yè)務(wù)邏輯層

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁(yè)和站點(diǎn)導(dǎo)航

ASP.NET 2.0數(shù)據(jù)教程之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)

ASP.NET 2.0數(shù)據(jù)教程之五:聲明參數(shù)

ASP.NET 2.0數(shù)據(jù)教程之六:編程設(shè)置ObjectDataSource的參數(shù)值

ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之八:使用兩個(gè)DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之九:跨頁(yè)面的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十:使用 GridView 和DetailView實(shí)現(xiàn)的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十一:基于數(shù)據(jù)的自定義格式化

ASP.NET 2.0數(shù)據(jù)教程之十二:在GridView控件中使用TemplateField


 

增加”選擇類(lèi)別”列表項(xiàng)

第一次訪問(wèn)FilterByDropDownList.ASPx 頁(yè)時(shí),類(lèi)別DropDownList中第一個(gè)數(shù)據(jù)項(xiàng)(Beverages)默認(rèn)是選中的, GridView中顯示的也是beverage類(lèi)別的產(chǎn)品. 比起顯示第一個(gè)類(lèi)別的產(chǎn)品, 我們可以為DropDownList 添加一個(gè)默認(rèn)選擇項(xiàng),比如 “—選擇類(lèi)別 --”,這樣也許更友好一些.要給DropDownList增加一個(gè)新的數(shù)據(jù)項(xiàng), 在屬性窗口中單擊Items 屬性的省略號(hào)圖標(biāo). 添加一個(gè)新的數(shù)據(jù)項(xiàng)并設(shè)置Text 為“—選擇類(lèi)別--”設(shè)置Value 為-1.



圖11:  增加 “—選擇類(lèi)別--” 數(shù)據(jù)項(xiàng)

除了上面的方法,你還可以使用下面的標(biāo)記性語(yǔ)言(markup)為DorpDownList添加一個(gè)數(shù)據(jù)項(xiàng):
<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>


另外,我們需要把DropDownList控件的AppendDataBoundItems屬性設(shè)置為T(mén)rue,因?yàn)閿?shù)據(jù)源控件中的類(lèi)別數(shù)據(jù)綁定到DropDownList 時(shí), 將會(huì)覆蓋所有的手工增加的列表項(xiàng),除非你的AppendDataBoundItems屬性設(shè)置True.



圖12: 設(shè)置AppendDataBoundItems 屬性為T(mén)rue

這樣,第一次訪問(wèn)該頁(yè)面時(shí), ”—選擇類(lèi)別—“數(shù)據(jù)項(xiàng)是被選中并且不顯示任何產(chǎn)品.



圖13: 頁(yè)面第一次加載時(shí)不顯示產(chǎn)品

沒(méi)有顯示產(chǎn)品的原因是由于”—選擇類(lèi)別—“項(xiàng)被選中,該數(shù)據(jù)項(xiàng)的值是-1, 而數(shù)據(jù)庫(kù)中不存在CategoryID為-1的產(chǎn)品. 如果這正是你想要的那現(xiàn)在就可以打完收工了, 如果你希望在"--選擇類(lèi)別--"項(xiàng)選中時(shí)顯示所有類(lèi)別的產(chǎn)品,在ProductsBLL類(lèi)中自定義GetProductsByCategoryID(categoryID)方法,如果categoryID參數(shù)值小于0則調(diào)用GetProducts()方法:

public Northwind.ProductsDataTable GetProductsByCategoryID(int categoryID)
{
    if (categoryID < 0)
        return GetProducts();
    else
        return Adapter.GetProductsByCategoryID(categoryID);
}
在這里使用的技巧與在后面的[聲明式語(yǔ)法]教程中顯示全部供應(yīng)商的相似,盡管在這個(gè)例子中我們使用了-1而不是使用null來(lái)指示是否應(yīng)該獲取全部記錄. 這是因?yàn)镚etProductsByCategoryID(categoryID)中的categoryID參數(shù)需要一個(gè)整型值,與之相反,在[聲明式語(yǔ)法]教程中我們傳入了一個(gè)字符串參數(shù).

圖14 顯示了當(dāng)”—選擇類(lèi)別—“項(xiàng)選中時(shí)FilterByDropDownList.ASPx頁(yè)面的截屏. 此時(shí),所有類(lèi)型的產(chǎn)品默認(rèn)全部顯示, 用戶可以通過(guò)選擇特定的類(lèi)別來(lái)縮小顯示范圍



圖 14: 默認(rèn)情況下顯示所有產(chǎn)品

總結(jié)


在顯示分層次的關(guān)系數(shù)據(jù)時(shí),經(jīng)常使用主/從報(bào)表,通過(guò)它用戶可以先看到最上層的數(shù)據(jù),然后再深入到詳細(xì)信息. 在本指南中我們分析了構(gòu)建一個(gè)簡(jiǎn)單的主/從報(bào)表來(lái)顯示選定類(lèi)別的產(chǎn)品. 我們通過(guò)使用DropDownList控件列出類(lèi)別以及GridView顯示選定類(lèi)別的產(chǎn)品完成了這個(gè)主/從報(bào)表.

在下一篇教程中,我們將通過(guò)使用兩個(gè)DropDownList來(lái)進(jìn)一步介紹DropDownList過(guò)濾的主/從報(bào)表,.

祝編程快樂(lè)!

作者簡(jiǎn)介

Scott Mitchell,著有六本ASP/ASP.NET方面的書(shū),是4GuysFromRolla.com的創(chuàng)始人,自1998年以來(lái)一直應(yīng)用微軟Web技術(shù)。Scott是個(gè)獨(dú)立的技術(shù)咨詢顧問(wèn),培訓(xùn)師,作家,最近完成了將由Sams出版社出版的新作,24小時(shí)內(nèi)精通ASP.NET 2.0。他的聯(lián)系電郵為mitchell@4guysfromrolla.com,也可以通過(guò)他的博客http://ScottOnWriting.NET與他聯(lián)系。

NET技術(shù)ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 福利网址 | 国产精品69久久久久水密桃 | 日韩欧美在线免费观看视频 | 欧美精品欧美精品系列 | 成人在线精品视频 | 精品福利一区二区三区 | 日韩毛片| 亚洲精品99999 | 欧美日韩视频 | 久久y| www.youjizz.com日韩 | 黄色一级片aaa | 国产免费一区二区 | 黄色一级片aaa | 一区二区精品 | 午夜影院 | 一色桃子av一区二区 | 久久精品国产99国产精品 | 日韩一区在线视频 | 成人av一区二区亚洲精 | 久久久涩 | 在线国产一区二区三区 | 日韩精品a在线观看图片 | 免费观看一级毛片 | 亚洲毛片在线观看 | 麻豆国产一区二区三区四区 | 久久91av| 国产免费一区二区 | 黄色成人av | 久久久久久久久久影视 | 在线免费观看黄视频 | www.亚洲 | 日韩男人天堂 | 国产精品一区二区av | 羞羞视频在线观看网站 | www.亚洲国产精品 | 国产日韩一区二区三免费 | 日韩α片| 一区二区三区亚洲 | 成人乱人乱一区二区三区软件 | 免费国产视频 |