摘要:[習題] DropDownList/ListBox連動,查詢菜單
這個題目非常簡單,只要您看過任何一本 ASP.NET入門書,都應該有能力作得出來。
會卡住的原因,通常是「初學者遇見問題,不知道怎麼設計、怎麼應用資料表?」
以這個例子來說,資料表只需要一個就夠啦。
看了這個資料表的內容,您應該就要自己會作......................
有讀者詢問:「要作一個菜單查詢的小功能。
當我選擇 DropDownList菜色種類,例如:前菜、主菜、甜點....等等。
底下的 ListBox就會出現這類型的所有菜名,
例如:選了"主菜"的種類, ListBox就出現丁骨牛排、海鮮總匯、義大利麵...等等」
=======================================================================
這個題目非常簡單,只要您看過任何一本 ASP.NET入門書,都應該有能力作得出來。
會卡住的原因,通常是「初學者遇見問題,不知道怎麼設計、怎麼應用資料表?」
以這個例子來說,資料表只需要一個就夠啦。
看了這個資料表的內容,您應該就要自己會作......................
.
...
......
.........
..................你說什麼?看了上面的 Table,還是不會作.................
如果您看了上述的資料表與內容,卻還是不會作,
那情況就很慘了..................
一,或許是您不用功、不勤於練習。
二,或許是買錯書了。建議您購買「ASP.NET專題實務 / 文魁出版」,這本書有 VB版與 C#版兩種。
以下的設定步驟,本書第九章有好幾個範例,反覆練習
HTML畫面設計 ----
1). 畫面上有一個 DropDownList與 ListBox,兩者都需要啟用「AutoPostBack」屬性
如此一來,當您一點選就會自動觸發。就不需要多一個「按鈕」來作 Submit的動作了
2). 兩個控制項都要各自搭配一個 SqlDataSource,對應上面的 Food_Menu資料表
3). 第二個 (畫面下方的)ListBox控制項,因為要搭配 DropDownList連動,設定上有些重點。
如下面兩章圖片所示:
上面兩張圖片的設定,非常....非常....非常的基本,而且變化超多!!!!!
如果一個初學者沒有這種能力,那 ASP.NET我看得重新學起了.................
怎麼辦??? 建議您購買「ASP.NET專題實務 / 文魁出版」,這本書有 VB版與 C#版兩種。相關範例超多~
以上的設定步驟,本書第九章有好幾個範例,反覆練習
====================================================================
第一個程式完成以後,是完全不用寫程式的。
會出現下面的執行畫面。
這個範例執行起來也正常,只是難看。
當你第一次執行畫面時,根本還沒點選呢。底下的 ListBox就會出現菜名了。
這種程式的成果,顯然不夠好
但初學者只靠設定,不寫程式,大概也只能這樣做.....................
以下是 廣告 ----
當我們遇見困難,才是成長的時候。
因為這樣的 Bug可以逼出我們的盲點,解決它才能真正學到東西。
坊間的書籍,往往一個範例搞定。
讀者乖乖地跟著作,不痛不癢的,也沒啥深刻印象。
等到要自己動手的時候,才發現無從下手、不會作。或是遇見困難不會解。
(就好像以前上數學課,聽老師講都聽得懂。但考試的時候,就發現有一兩個步驟漏了,或是做到一半作不下去)
遇見 Bug,才能加深學習印象。
下面是解決後的執行畫面:
***************************************************************************************
兩個範例讓您下載,本文範例_Food_Menu.rar
這個範例太簡單了。不要再跟我要求什麼VB版?C#版的程式改寫?
***************************************************************************************
比較兩個範例的差異,我們可以發現:
02 食物種類:
03 <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
04 DataSourceID="SqlDataSource1" DataTextField="food_class"
05 DataValueField="food_class">
06 </asp:DropDownList> (請使用 AutoPostBack)
07 <asp:SqlDataSource ID="SqlDataSource1" runat="server"
08 ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
09 SelectCommand="SELECT DISTINCT [food_class] FROM [Food_Menu]">
10 </asp:SqlDataSource>
11
12 </p>
13 <div>
14
15 與這個分類有關的菜名:
16 <asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True"
17 DataTextField="food_name" DataValueField="food_name"></asp:ListBox>(請使用 AutoPostBack)
18
19 <asp:SqlDataSource ID="SqlDataSource2" runat="server"
20 ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
21
22 SelectCommand="SELECT [food_name], [food_class] FROM [Food_Menu] WHERE ([food_class] = @food_class)">
23 <SelectParameters>
24 <asp:ControlParameter ControlID="DropDownList1" Name="food_class"
25 PropertyName="SelectedValue" Type="String" />
26 </SelectParameters>
27 </asp:SqlDataSource>
第二個範例的 ListBox,裡面沒有 DataSourceID屬性(DataSourceID = "SqlDataSource2"),我自己動手刪除了。
這是希望「當User點選 DropDownList之後,資料才會對應出現在底下的 ListBox裡面」
我們自己動手(寫程式)控制資料出現的時機,這就是 DataBinding(資料繫結、資料綁定)
第二個範例,用到 DataBinding(資料繫結、資料綁定)的觀念,很多書都不提這一點,但我覺得它的觀念很重要。
我寫了一系列的文章,請您慢慢看下去
DataBinding?資料繫結?資料綁定? #1--DataSourceID與DataSource?
關於 DropDownList 與 ListBox,這兩個控制項根本是兄弟,我也發表過兩篇類似的範例:
- http://www.dotblogs.com.tw/mis2000lab/archive/2008/10/09/dropdownlist_items.add081009.aspx
- http://www.dotblogs.com.tw/mis2000lab/archive/2008/12/01/listbox.item_add_remove.aspx
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽
[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。