校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > ASP.NET 2.0中的數(shù)據(jù)操作之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0中的數(shù)據(jù)操作之八:使用兩個DropDownList過濾的主/從報表

熱門標簽:天心智能電銷機器人 400電話辦理哪家性價比高 代理接電話機器人如何取消 地圖定位圖標標注 遂寧市地圖標注app 地圖標注專業(yè)團隊 濮陽外呼電銷系統(tǒng)怎么樣 塔城代理外呼系統(tǒng) 地圖標注的公司有哪些

導言

  在前面的指南中我們研究了如何顯示一個簡單的主/從報表, 該報表使用DropDownList和GridView控件, DropDownList填充類別,GridView顯示選定類別的產(chǎn)品. 這類報表用于顯示具有一對多關(guān)系的記錄時非常合適, 同時它也可以很容易的被擴展以顯示多個一對多關(guān)系的數(shù)據(jù). 比如, 一個訂單系統(tǒng)應(yīng)該包含表示客戶,訂單和訂單明細的表. 一個客戶也許有多個訂單,每個訂單又包含多條訂單項. 這樣的數(shù)據(jù)可以使用兩個DropDownList和一個GridView呈現(xiàn)給用戶. 第一個DropDownList應(yīng)該包含數(shù)據(jù)庫中所有客戶的列表, 第二個DropDownList的內(nèi)容是選定客戶的訂單. GridView用于列出所選定訂單的訂單明細項.
Step 1: 創(chuàng)建DropDownList并使用類別數(shù)據(jù)填充

  我們的第一個目標是添加一個能夠列出類別的DropDownList. 這些步驟在前面的指南中已經(jīng)做詳細的分析, 但為了保持本篇指南的完整性有必要在這里簡單概括一下.

  打開Filtering文件夾中的MasterDetailsDetails.aspx, 在頁面上添加一個DropDownList, 設(shè)置它的ID為Categories,然后單擊智能標記上的 Configure Data Source鏈接. 在數(shù)據(jù)源配置向?qū)е羞x擇新增一個數(shù)據(jù)源.

圖 1: 為DropDownList增加一個新的數(shù)據(jù)源

  當然, 新的數(shù)據(jù)源應(yīng)該是ObjectDataSource. 把新的ObjectDataSource命名為CategoriesDataSource并且讓他調(diào)用CategoriesBLL對象的GetCategories()方法

圖 2: 選擇使用CategoriesBLL類

圖3: 配置ObjectDataSource使用GetCategories()方法

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

圖4: 指定DropDownList 顯示CategoryName列并且使用CategoryID列作為數(shù)據(jù)項的值

  這時,我們就有了一個使用Categories表中的記錄來填充的DropDownList控件. 當用戶在DropDownList中選擇一個新的類別時, 我們需要一次回發(fā),這樣可以刷新在第二步中我們要創(chuàng)建的產(chǎn)品DropDownList控件. 所以, categoriesDropDownList的智能標記上選中AutoPostBack選項.

圖 5: 選中Categories DropDownList 的AutoPostBack

Step 2: 在第二個DropDownList 中顯示選中類別的產(chǎn)品

  Categories DropDownList完成后, 下一步就需要一個顯示屬于選定類別的產(chǎn)品的DropDownList了. 要完成這個功能, 再增加一個DropDownList控件并命名為ProductsByCategory. 與Categories DropDownList一樣, 為ProductsByCategory DropDownList創(chuàng)建一個新的ObjectDataSource并命名為ProductsByCategoryDataSource.

圖 6: 為ProductsByCategory DropDownList添加新數(shù)據(jù)源

圖7: 創(chuàng)建一個新的 ObjectDataSource 并命名為ProductsByCategoryDataSource

  由于ProductsByCategory DropDownList 需要顯示屬于選定類別的產(chǎn)品, 讓ObjectDataSource 調(diào)用ProductsBLL對象的GetProductsByCategoryID(categoryID)方法.

圖8: 選擇使用ProductsBLL類

圖9: 配置ObjectDataSource 使用GetProductsByCategoryID(categoryID)方法

  在向?qū)У淖詈笠徊叫枰付╟ategoryID的值. 我們把Categories DropDownList的已選擇的數(shù)據(jù)項項作為該參數(shù)值.

圖10: 使用categoryID參數(shù)從Categories DropDownList接收值

  ObjectDataSource配置完成后, 剩下的就是指定DropDownList要顯示的字段和作為值的字段了. 設(shè)置為顯示ProductName并把ProductID做為值字段

圖11: 指定 DropDownList數(shù)據(jù)項的文本和值使用的數(shù)據(jù)源字段

  ObjectDataSource 和ProductsByCategory DropDownList配置完成后頁面上會有兩個DropDownList: 第一個列出所有的類別,第二個列出屬于選定類別的產(chǎn)品. 當用戶在第一個DropDownList上選擇了一個新的類別后, 將會發(fā)生一次回發(fā)(postback),第二個DropDownList將會重新綁定以顯示屬于新選定類別的產(chǎn)品. 圖12 和圖13顯示了在瀏覽器中看到的MasterDetailsDetails.aspx頁面.

圖12: 第一次訪問頁面時Beverages 類別是選中的.

圖13: 選擇一個不同的類別時顯示該類別的產(chǎn)品

圖14: 激活productsByCategory DropDownList的 AutoPostBack屬性

Step 3: 使用DetailsView 顯示選中產(chǎn)品的詳細信息

  最后一個步驟是在DetailsView中顯示選中產(chǎn)品的詳細信息. 要完成該功能, 添加一個DetailsView到頁面上, 設(shè)置它的ID屬性為ProductDetails, 給它創(chuàng)建一個新的ObjectDataSource. 配置ObjectDataSource使它通過ProductsBLL類的GetProductByProductID(productID)方法填充數(shù)據(jù),使用ProductsByCategory DropDownList的已選擇項的值作為productID參數(shù)的值.

圖15: 選擇使用ProductsBLL類

圖16: 配置 ObjectDataSource 使用GetProductByProductID(productID)方法

圖17: 使用ProductsByCategory DropDownList的值作為productID參數(shù)的值

  你可以選擇在DetailsView顯示的任何有效的字段. 我決定不顯示ProductID, SupplierID, 和CategoryID字段并且對其余的字段重新排序及格式化.另外, 我去掉了DetailsView的Height和Width屬性設(shè)置, 允許DetailsView可以擴展到需要的寬度, 這樣比把它限制在指定的大小會更好的顯示數(shù)據(jù). 下面便是全部的標記性語言(markup)

asp:DetailsView ID="ProductDetails" runat="server" AutoGenerateRows="False" DataKeyNames="ProductID"

DataSourceID="ObjectDataSource1" EnableViewState="False">

Fields>

asp:BoundField DataField="ProductName" HeaderText="Product" SortExpression="ProductName" />

asp:BoundField DataField="CategoryName" HeaderText="Category" ReadOnly="True" SortExpression="CategoryName" />

asp:BoundField DataField="SupplierName" HeaderText="Supplier" ReadOnly="True" SortExpression="SupplierName" />

asp:BoundField DataField="QuantityPerUnit" HeaderText="Qty/Unit" SortExpression="QuantityPerUnit" />

asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" HeaderText="Price"

HtmlEncode="False" SortExpression="UnitPrice" />

asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" SortExpression="Units In Stock" />

asp:BoundField DataField="UnitsOnOrder" HeaderText="UnitsOnOrder" SortExpression="Units On Order" />

asp:BoundField DataField="ReorderLevel" HeaderText="ReorderLevel" SortExpression="Reorder Level" />

asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" SortExpression="Discontinued" />

/Fields>

/asp:DetailsView>

  花點時間在瀏覽器中測試一下MasterDetailsDetails.aspx頁面. 乍一看好像一切如預計的那樣順利, 但是卻有一個小問題. 當你選擇了一個新類別, ProductsByCategory DropDownList會更新顯示選中類別的產(chǎn)品, 但是ProductDetails DetailsView還是顯示上一個產(chǎn)品的信息. 當選擇了一個選中類別的不同的產(chǎn)品時DetailsView應(yīng)該被更新. 此外,如果你的測試足夠徹底, 你將會發(fā)現(xiàn)如果你不斷的選擇新類別(比如在Categories DropDownList中選擇Beverages,然后選擇Condiments,然后是Confections)每個類別的選擇都會使ProductDetails DetailsView被刷新.

  為了讓這個問題更具體一些, 讓我們看一個例子. 當你第一次訪問該頁面時, Beverages類別是選中的并且與之相關(guān)的產(chǎn)品在ProductsByCategory DropDownList中列出. Chai是當前選中的產(chǎn)品,他的詳細信息顯示在ProductDetails DetailsView中, 如圖18.

圖18: DetailsView顯示了選中產(chǎn)品的詳細信息

  如果你把類別選項Beverages 改成 Condiments, 便會發(fā)生一次回發(fā), ProductsByCategory DropDownList會相應(yīng)的更新, 但是DetailsView仍然會顯示Chai的詳細信息.

圖19:上一次選擇產(chǎn)品的詳細信息仍然在顯示

  在列表中選擇一個產(chǎn)品會如預期地一樣刷新DetailsView, 如果你改變了產(chǎn)品之后選擇了一個新的類別, DetailsView又一次沒有刷新. 然后如果你選擇一個新類別而不是選擇一個產(chǎn)品, DetailsView則會刷新. 究竟是怎么回事呢?

  這個問題是由頁面生命周期的時間調(diào)度引發(fā)的. 當頁面被請求時會經(jīng)過一系列的處理后呈現(xiàn)出來. 這其中的一項處理便是ObjectDataSource控件檢查他的SelectParameters值是否發(fā)生變化. 如果發(fā)生了變化, WEB控件綁定到ObjectDataSource的數(shù)據(jù)便會刷新顯示. 比如, 當一個新類別被選中時, ProductsByCategoryDataSource ObjectDataSource發(fā)現(xiàn)它的參數(shù)值已經(jīng)發(fā)生了變化,然后ProductsByCategory DropDownList就會重新綁定,獲取所選中類別的產(chǎn)品.

  在這種情況下發(fā)生的該問題是由于在頁面的生命周期中ObjectDataSources檢查參數(shù)是否發(fā)生改變的動作是在關(guān)聯(lián)的WEB控件重新綁定之前. 因此,當選擇了一個新的類別ProductsByCategoryDataSource ObjectDataSource會檢查到它的參數(shù)值發(fā)生了變化. 但是, ProductDetails DetailsView使用的ObjectDataSource并沒有發(fā)生任何變化,因為ProductsByCategory DropDownList還沒有重新綁定. 在稍后的生命周期中ProductsByCategory DropDownList重新綁定到它的ObjectDataSource,獲取剛剛選中類別的產(chǎn)品. 當ProductsByCategory DropDownList的值發(fā)生變化的時候ProductDetails DetailsView的 ObjectDataSource已經(jīng)完成了它的參數(shù)值檢查工作. 因此, DetailsView還是顯示先前的數(shù)據(jù). 圖20描述了這個交互的過程.

圖20: T ProductDetails DetailsView的 ObjectDataSource的檢查工作結(jié)束后ProductsByCategory DropDownList的值才改變.

  要解決這個問題,我們需要在ProductsByCategory DropDownList綁定后顯式的重新綁定ProductDetails DetailsView. 我們可以在ProductsByCategory DropDownList的DataBound事件中調(diào)用ProductDetails DetailsView的DataBind()方法. 把下面的事件處理代碼添加到MasterDetailsDetails.aspx頁面的代碼后置類:

protected void ProductsByCategory_DataBound(object sender, EventArgs e)
{

 ProductDetails.DataBind();

}

添加對ProductDetails DetailsView的DataBind()方法的顯式調(diào)用后,就一切正常了. 圖21高亮顯示了該方法是如何解決這個問題的.

圖21:在ProductsByCategory DropDownList的DataBound事件中ProductDetails DetailsView被顯示的刷新.

  DropDownList控件是一個非常理想的用于主/從報表(主記錄和從記錄存在一對多關(guān)系)的用戶接口元素(user interface element ). 在前面的教程中我們看到了如何使用單個DropDownList對選中的類別進行產(chǎn)品過濾. 在本教程中我們使用GridView代替了DropDownList做為產(chǎn)品列表, 使用DetailsView顯示選中產(chǎn)品的詳細信息. 本教程所討論的概念可以很容易的擴展到包含多個一對多關(guān)系的數(shù)據(jù)模型, 比如客戶,訂單及訂單項. 通常,在一對多的關(guān)系中你總是可以使用DropDownList 來表示"主"實體(一對多中的一,主/從關(guān)系的主記錄)

祝編程愉快!

作者簡介

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

您可能感興趣的文章:
  • ASP.NET中DropDownList下拉框列表控件綁定數(shù)據(jù)的4種方法
  • C#使用DropDownList綁定添加新數(shù)據(jù)的方法匯總
  • DropDownList綁定數(shù)據(jù)表實現(xiàn)兩級聯(lián)動示例
  • Jquery加載時從后臺讀取數(shù)據(jù)綁定到dropdownList實例
  • .net控件dropdownlist動態(tài)綁定數(shù)據(jù)具體過程分解
  • DropDownList綁定選擇數(shù)據(jù)報錯提示異常解決方案
  • ASP.NET MVC DropDownList數(shù)據(jù)綁定及使用詳解
  • DropDownList控件綁定數(shù)據(jù)源的三種方法

標簽:吉林 麗江 宜春 河南 重慶 婁底 汕頭 本溪

巨人網(wǎng)絡(luò)通訊聲明:本文標題《ASP.NET 2.0中的數(shù)據(jù)操作之八:使用兩個DropDownList過濾的主/從報表》,本文關(guān)鍵詞  ASP.NET,2.0,中的,數(shù)據(jù),操作,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET 2.0中的數(shù)據(jù)操作之八:使用兩個DropDownList過濾的主/從報表》相關(guān)的同類信息!
  • 本頁收集關(guān)于ASP.NET 2.0中的數(shù)據(jù)操作之八:使用兩個DropDownList過濾的主/從報表的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美亚洲免费在线一区| av电影在线观看不卡 | 成人黄色777网| 精品美女在线观看| 日本伊人色综合网| 欧美色精品在线视频| 亚洲色图色小说| 国产99久久久久久免费看农村| 欧美成人精品3d动漫h| 日本中文字幕一区二区有限公司| 欧美性猛交xxxxxx富婆| 亚洲三级在线看| 粉嫩aⅴ一区二区三区四区五区| 精品999在线播放| 精品一区二区免费视频| 日韩一区二区三区四区五区六区| 日韩黄色小视频| 欧洲日韩一区二区三区| 亚洲免费观看高清完整| 国内精品国产三级国产a久久| 日韩欧美在线不卡| 六月丁香婷婷久久| 日韩女同互慰一区二区| 欧美96一区二区免费视频| 欧美美女一区二区三区| 午夜激情一区二区| 91精品国产一区二区三区香蕉| 亚洲人吸女人奶水| www.成人网.com| 国产欧美日韩视频在线观看| 国产露脸91国语对白| 欧美v日韩v国产v| 性做久久久久久| 欧美日韩电影在线播放| 美女脱光内衣内裤视频久久网站 | 色老汉一区二区三区| 亚洲在线免费播放| 欧美最猛性xxxxx直播| 亚洲精品乱码久久久久久久久| 99久久亚洲一区二区三区青草| 日韩久久一区二区| 色婷婷av一区| 亚欧色一区w666天堂| 日韩一区二区在线观看| 国产一区美女在线| 国产精品日韩成人| 一本大道av伊人久久综合| 亚洲精品乱码久久久久久日本蜜臀| 欧美午夜一区二区| 视频一区视频二区中文字幕| 日韩你懂的电影在线观看| 国产伦精一区二区三区| 中文字幕一区二区三区av| 欧美在线观看你懂的| 日韩精品福利网| 久久伊人中文字幕| 成人黄色在线网站| 亚洲视频在线观看三级| 色av一区二区| 香蕉乱码成人久久天堂爱免费| 日本韩国欧美一区二区三区| 亚洲小少妇裸体bbw| 777亚洲妇女| 九九**精品视频免费播放| 欧美激情在线观看视频免费| 91小视频在线免费看| 亚洲国产一区二区在线播放| 日韩欧美一级二级三级| 国产黄色精品网站| 亚洲欧美日韩国产手机在线| 欧美色综合影院| 美女网站色91| 亚洲靠逼com| 欧美xingq一区二区| 97精品超碰一区二区三区| 天天亚洲美女在线视频| 国产三级久久久| 欧美日韩卡一卡二| 国产精品亚洲人在线观看| 亚洲综合在线五月| 精品日产卡一卡二卡麻豆| 99国产精品久久| 美女脱光内衣内裤视频久久网站| 中文字幕国产精品一区二区| 欧美日韩美女一区二区| 国产成人精品一区二| 亚洲综合久久久| 国产丝袜欧美中文另类| 欧美三级电影网| 国产suv一区二区三区88区| 亚洲乱码中文字幕| 日韩欧美一区在线| 成人免费毛片aaaaa**| 日韩高清一区二区| 1024亚洲合集| 久久毛片高清国产| 欧美人与z0zoxxxx视频| 成人av集中营| 麻豆专区一区二区三区四区五区| 亚洲激情av在线| 久久久久九九视频| 欧美日韩一级片网站| 成人一级黄色片| 日本不卡视频一二三区| 亚洲免费观看视频| 久久久国产一区二区三区四区小说| 欧美日韩国产在线播放网站| 波多野结衣中文字幕一区二区三区 | 欧美日韩免费电影| a美女胸又www黄视频久久| 激情综合色综合久久| 亚洲国产aⅴ成人精品无吗| 亚洲欧洲av在线| 久久久国产午夜精品| 精品日产卡一卡二卡麻豆| 欧美高清性hdvideosex| 色婷婷狠狠综合| 成人黄页在线观看| 国产激情一区二区三区四区| 另类综合日韩欧美亚洲| 天天综合网天天综合色| 一区二区不卡在线播放 | 国产精品超碰97尤物18| 精品少妇一区二区三区在线播放| 欧美亚洲日本一区| 成人性生交大片免费看视频在线 | 亚洲精品成a人| 国产精品美女久久久久久久久久久| 久久综合九色综合97婷婷女人| 欧美乱妇15p| 欧美人与z0zoxxxx视频| av日韩在线网站| 国产麻豆成人精品| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲午夜成aⅴ人片| 亚洲精品免费在线播放| 国产精品乱人伦| 亚洲同性同志一二三专区| 1区2区3区精品视频| 最新高清无码专区| 日韩伦理电影网| 亚洲品质自拍视频| 亚洲女与黑人做爰| 日韩理论在线观看| 亚洲男人的天堂网| 亚洲精品免费在线观看| 夜夜揉揉日日人人青青一国产精品| 日韩美女视频一区| 亚洲免费视频成人| 一区二区在线看| 亚洲午夜精品在线| 蜜臀精品一区二区三区在线观看 | 欧美三级日本三级少妇99| 欧美无人高清视频在线观看| 欧洲色大大久久| 欧美女孩性生活视频| 欧美日韩1区2区| 91精品国产福利在线观看 | 欧美日韩中字一区| 欧美日韩精品欧美日韩精品一综合| 欧美日韩亚洲综合一区| 欧美精品欧美精品系列| 日韩欧美中文字幕精品| 欧美精品一区二区三区很污很色的 | 日精品一区二区三区| 美日韩黄色大片| 蜜臀av亚洲一区中文字幕| 久久er99热精品一区二区| 国产麻豆精品theporn| 粉嫩高潮美女一区二区三区| 99久久婷婷国产| 欧美视频日韩视频| 337p亚洲精品色噜噜狠狠| 日韩免费一区二区| 国产区在线观看成人精品| 专区另类欧美日韩| 五月综合激情日本mⅴ| 美女视频黄久久| 国产精品中文字幕欧美| aaa欧美大片| 欧美区一区二区三区| 国产女人aaa级久久久级| 亚洲综合激情另类小说区| 极品瑜伽女神91| 99久久婷婷国产| 欧美精品18+| 日韩欧美国产一区在线观看| 国产精品福利av| 午夜精品免费在线| 国产一区二区按摩在线观看| 成人av网址在线| 欧美一区二区三区在线看| 国产日韩欧美高清在线| 一区二区三区欧美亚洲| 精品一区二区三区在线视频| 99精品偷自拍| 欧美一级午夜免费电影| 国产精品美女视频| 日本美女一区二区三区| 懂色av中文一区二区三区|