[習題] DropDownList / ListBox連動,查詢菜單

摘要:[習題] 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#版的程式改寫?

 ***************************************************************************************

 

 

比較兩個範例的差異,我們可以發現:

01     <p>
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,這兩個控制項根本是兄弟,我也發表過兩篇類似的範例:

 

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程教學,遠距教學 (Web Form 約 51hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程教學,遠距教學 (ASP.NET MVC 約 135hr)  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.主講   事先錄好的影片,並非上課側錄!   觀看時,有如「一對一」面對面講課