2013-11-21 36 views
2

我想構建一個程序,如果用戶從下拉列表中選擇了一些內容,那麼標籤將根據選擇內容顯示。C#切換語句查詢MYSQL數據庫

EG:

從下拉菜單標籤會顯示「狗是£20」選擇狗

選擇從下拉貓標籤會顯示「貓是£15」

我沒有做它正確,並已在它幾個小時任何幫助將不勝感激。

代碼到目前爲止

DataSet ds = new DataSet(); 
MySqlConnection cs = new MySqlConnection(@"SERVER= 000.000.00.000;username=myusername;password=******; Initial Catalog = mydatabase"); 
MySqlDataAdapter da = new MySqlDataAdapter(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    MySqlCommand cd = new MySqlCommand("SELECT * FROM pets", cs); 
    cs.Open(); 
    MySqlDataReader ddl = cd.ExecuteReader(); 
    DdPetPist.DataSource = ddl; 
    DdPetPist.DataValueField = "Specie"; 
    DdPetPist.DataTextField = "Specie"; 
    DdPetPist.DataBind(); 
    cs.Close(); 
    cs.Dispose(); 
} 

選擇指數漲跌

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    MySqlCommand cd = new MySqlCommand("SELECT CAST(Specie AS varchar) + '#' + CAST(Specie_Price AS varchar) AS Specie FROM pets", cs); 
    cs.Open(); 
    PetPrice.Text = Convert.ToString(cd.ExecuteReader()); 
    cs.Close(); 
} 

請任何幫助將是巨大的,我一直停留在這個問題上幾個小時,想移動到我的下一個任務在手。

回答

2

我會做這樣的事情:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string selection = DropDownList1.SelectedValue; 
    string petPrice = string.Empty; 

    MySqlCommand cd = new MySqlCommand(String.Format("SELECT Specie_Price FROM pets WHERE Specie ='{0}'",selection), cs); 
    cs.Open(); 
    petPrice = Convert.ToString(cd.ExecuteScalar()); 
    cs.Close(); 

    petPrice.Text = String.Format("{0} is £{1}", selection, petPrice); 
} 

編輯:此外,在Page_Load中,你需要用的代碼,如果像下面(的IsPostBack!):

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     MySqlCommand cd = new MySqlCommand("SELECT * FROM pets", cs); 
     cs.Open(); 
     MySqlDataReader ddl = cd.ExecuteReader(); 
     DdPetPist.DataSource = ddl; 
     DdPetPist.DataValueField = "Specie"; 
     DdPetPist.DataTextField = "Specie"; 
     DdPetPist.DataBind(); 
     cs.Close(); 
     cs.Dispose(); 
    } 
} 
+0

謝謝,我會試試 – Beep

+0

問題'petPrice.Text = String.Format(「{0} is£{1}」,selection,petPrice);'但是我會看看我是否可以修復它 – Beep

+1

另外,不要忘記用'if(!IsPostBack){}'將Page_load中的代碼封裝起來。否則'DropDownList1.SelectedValue'將爲空。 – afzalulh

2

嘗試從下拉列表中將AutoPostBack屬性設置爲true。或者在這條線上放一個斷點

PetPrice.Text = Convert.ToString(cd.ExecuteReader()); 

並告訴我什麼值有「PetPrice.Text」。

+0

PetPrice.Text將作爲查詢輸出的標籤,我認爲我的查詢存在問題。 – Beep

2

你需要改變的ExecuteReader來的ExecuteScalar

PetPrice.Text = Convert.ToString(cd.ExecuteScalar()); 

而且你的Page_Load是在每一個負荷更新的一切,包括回傳。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) { 
    MySqlCommand cd = new MySqlCommand("SELECT * FROM pets", cs); 
    cs.Open(); 
    MySqlDataReader ddl = cd.ExecuteReader(); 
    DdPetPist.DataSource = ddl; 
    DdPetPist.DataValueField = "Specie"; 
    DdPetPist.DataTextField = "Specie"; 
    DdPetPist.DataBind(); 
    cs.Close(); 
    cs.Dispose(); 
    } 
} 
+0

嗯感謝您的回覆,我認爲有一個問題與我的查詢以及當我從下拉菜單中選擇不同的選項標籤不變。 – Beep

+1

看起來您也正在重新加載每個網頁加載的下拉菜單。將Page_Load的內容包裝在一個'if(!Page.IsPostBack){}'塊中。 –

+0

謝謝,程序仍然沒有做我想做的事,但我繼續努力。 – Beep