此處是備份,請看原始文章出處 -- http://www.dotblogs.com.tw/mis2000lab/archive/2009/11/04/dropdownlist_listbox_databinding_20091104.aspx

 

 

有讀者詢問:「要作一個菜單查詢的小功能。

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

 

 

 

 


 

 

......  寄信給我    mis2000lab (at) 雅虎.com.台灣 ................................................................................................................
ASP.NET專題實務  (文魁出版,VB版 P8187 / C#版P09027

.............................................................................................................. 寄信給我    mis2000lab (at) 雅虎.com.台灣 ........

arrow
arrow
    全站熱搜

    MIS2000 Lab 發表在 痞客邦 留言(0) 人氣()