2012-10-22 22 views
0

我想要做的只是一個非常簡單的選擇/選擇列表,其中包含來自MySQL數據庫的值。如何在ASP.NET/C#中創建一個選項列表?

我想在網上找到一個簡單的解決方案(我是C#的新手),我發現的一切都非常複雜。

我想要做的就是生成<select><option..等零件,以及我想設置的所有屬性和值。

這看起來應該非常非常容易。任何人都可以給我一些基本的指導,或者指給我一個教程,說明如何實現這一點?

目前,我正在使用MySqlCommandMySqlDataReader作爲與數據庫交談的類別(用於其他功能)。

+0

你想從mysql數據庫中獲取數據嗎? – Shyju

+0

就我所知,這應該是一個簡單的部分 - 建立數據庫連接,提交查詢然後遍歷返回的對象 - 至少,這就是它在PHP和Python中的工作原理。我更想知道如何爲選擇列表生成代碼。我會做相當於迴應它嗎?我不需要用戶控制? –

回答

0

通常,在列表/下拉菜單中,您獲得了(a)將被選擇的值和(b)其呈現給用戶的值。第一個可能是一些主鍵,第二個可能是一些自我解釋給用戶的標籤。

假設你有一個像

FoodValue | FoodLabel 
--------------- 
00010  | Sausage 
00020  | Eggs 
00030  | Cheese 

一個一桌菜放在一個列表框在你的ASP.NET視圖,例如listBox1中,然後 你可以在代碼讀取它背後使用

MySqlConnection con = new MySqlConnection("YOUR CONNECTION STRING"); 
MySqlCommand cmd = new MySqlCommand("SELECT FoodValue, FoodLabel FROM FOOD", con); 
con.Open(); 
MySqlDataReader r = cmd.ExecuteReader(); 

while(r.Read()) { 
    listBox1.Items.Add(new ListItem(r["FoodLabel"], r["FoodValue"]); 
} 
con.Close(); 

但請記住,這是一個快速和骯髒的方法。在生產代碼中,您需要將演示文稿和數據層分開。使用數據源控件以更好的方式綁定數據。

+0

這是現在給我一個「listBox1」不存在於當前的上下文中,即使我把一個控件放入ASP.Net –

0

我認爲你搜索的東西類似於DropDownList,它接受DataSource,所以你可以使用已經填充的MySqlDataReader

像這樣的事情

MySqlDataReader dr = //the code to fill the MySqlDataReader 
DropDownList1.DataSource = dr; 

您可以創建在你的頁面的設計DropDownList的。

要顯示你需要設置,則值

DropDownList1.DataValueField = "DbField1"; 
DropDownList1.DataTextField = "DbField2"; 
3

你要顯示的實體創建一個類的數據。例如:如果你想顯示所有國家都在下拉菜單中,創建國家一流

public class State 
{ 
    public int ID { set;get;} 
    public string Name { set;get;} 
} 

現在寫在其中查詢數據庫的方法,並通過項目的結果得到DataReader的,迭代和設定值我們國家班的新對象。將每個對象添加到(State類的)列表中。所以你的方法的返回類型將是一個State類對象列表。

public List<State> GetStates() 
{ 
    List<State> stateList=new List<State>(); 

    // execute query, read from reader and add to the stateList 
    // the below code is SqlServer DB specific. 
    // you need to change the Connection,Command class for it to use with MySql. 
    using (var con= new SqlConnection("replace your connection string")) 
    { 
     string qry="SELECT ID,NAME FROM STATES"; 
     var cmd= new SqlCommand(qry, objConnection); 
     cmd.CommandType = CommandType.Text;   
     con.Open(); 
     using (var objReader = cmd.ExecuteReader()) 
     { 
     if (objReader.HasRows) 
     { 
      while (objReader.Read()) 
      { 
      var item=new State(); 
      item.ID=reader.GetInt32(reader.GetOrdinal("ID")); 
      item.Name=reader.GetString(reader.GetOrdinal("Name")); 

      stateList.Add(item); 
      } 
     } 
     } 
    } 
    return stateList; 
} 

現在,有一個DropDownList控件在您的網頁,

<asp:DropDownList id="states" runat="server" /> 

現在,在這個頁面的代碼隱藏,你可以在下拉列表(可能在Page_Load事件)

設置數據
if(!isPostBack) 
{ 
    states.DataSource=yourRepositary.GetStates(); 
    states.DataTextField="Name"; 
    states.DataValueField="ID"; 
    states.DataBind(); 
} 
相關問題