2012-03-26 31 views
1

我是新來的C#,如。3 DropDownLists搜索功能

我目前工作的一個搜索功能,使用C#3個DropDownLists和一個提交按鈕。當用戶在DropDownList上選擇一個項目並單擊提交時,它將打印相應選擇的表格。

有3個DropDownLists:

  1. 省,
  2. 城市,
  3. 專業化。

這將搜索適合的選擇可用的醫生。例如,我選擇了第一個DropDownList中的province1,第二個中選擇了city1,第三個選擇了一個心理學家,當提交按鈕被觸發時,它將打印位於省1,城市1並具有心理學專業的可用醫生。

我已經有一個代碼,還是想出來的,但是,當我點擊提交按鈕時,什麼也沒有發生。有人能幫我嗎?

這是我到目前爲止已經完成:在這行代碼是在提交按鈕點擊功能

public partial class Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     System.Threading.Thread.Sleep(1000); 

     if (!IsPostBack) 
     { 
      string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString; 
      SqlConnection conn = new SqlConnection(constring); 
      DataTable dt = new DataTable("emed_province"); 

      using (conn) 
      { 
       conn.Open(); 
       SqlCommand comm = new SqlCommand("SELECT * FROM emed_province ORDER BY PROVINCE_NAME ASC", conn); 
       SqlDataAdapter adptr = new SqlDataAdapter(comm); 
       adptr.Fill(dt); 
      } 

      ddlProvince.DataSource = dt; 
      ddlProvince.DataTextField = "PROVINCE_NAME"; 
      ddlProvince.DataValueField = "PROVINCE_CODE"; 
      ddlProvince.DataBind(); 

      ddlProvince.Items.Insert(0, new ListItem("---------------SELECT---------------", "0")); 
      ddlCity.Items.Insert(0, new ListItem("---------------SELECT---------------", "0")); 
      ddlSpec.Items.Insert(0, new ListItem("---------------SELECT---------------", "0")); 
     } 
    } 

    protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     System.Threading.Thread.Sleep(1000); 

     string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString; 
     SqlConnection conn = new SqlConnection(constring); 
     DataTable dt = new DataTable("emed_province"); 

     using (conn) 
     { 
      conn.Open(); 
      SqlCommand comm = new SqlCommand("SELECT * FROM emed_city WHERE PROVINCE_CODE [email protected]", conn); 
      comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue); 
      SqlDataAdapter adptr = new SqlDataAdapter(comm); 
      adptr.Fill(dt); 

      SqlParameter param = new SqlParameter(); 
      param.ParameterName = "@pcode"; 
      param.Value = ddlProvince; 

      comm.Parameters.Add(param); 
     } 
     ddlCity.DataSource = dt; 
     ddlCity.DataTextField = "CITY_NAME"; 
     ddlCity.DataValueField = "CITY_CODE"; 
     ddlCity.DataBind(); 

     ddlCity.Items.Insert(0, new ListItem("---------------SELECT---------------", "0")); 
    } 

    protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     System.Threading.Thread.Sleep(1000); 

     string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString; 
     SqlConnection conn = new SqlConnection(constring); 
     DataTable dt = new DataTable("emed_city"); 

     using (conn) 
     { 
      conn.Open(); 
      SqlCommand comm = new SqlCommand("SELECT * FROM emed_specialization", conn); 
      comm.Parameters.AddWithValue("@ccode", ddlCity.SelectedValue); 
      SqlDataAdapter adptr = new SqlDataAdapter(comm); 
      adptr.Fill(dt); 

      SqlParameter param = new SqlParameter(); 
      param.ParameterName = "@ccode"; 
      param.Value = ddlCity; 

      comm.Parameters.Add(param); 
     } 
     ddlSpec.DataSource = dt; 
     ddlSpec.DataTextField = "SPEC_NAME"; 
     ddlSpec.DataValueField = "SPEC_CODE"; 
     ddlSpec.DataBind(); 

     ddlSpec.Items.Insert(0, new ListItem("---------------SELECT---------------", "0")); 
    } 

    protected void btnSub_Click(object sender, EventArgs e) 
    { 
     string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString; 
     SqlConnection conn = new SqlConnection(constring); 
     DataTable dt = new DataTable("emed_doctors"); 
     using (conn) 
     { 
      conn.Open(); 
      SqlCommand comm = new SqlCommand("SELECT DOCTOR_NAME FROM emed_doctors where Province = '" + ddlProvince.SelectedItem.ToString() + "'", conn); 
      SqlDataAdapter adptr = new SqlDataAdapter(comm); 
      adptr.Fill(dt); 
     } 
    } 
} 

回答

1

做出改變

正確的代碼:

SqlCommand comm = new SqlCommand("SELECT DOCTOR_NAME FROM emed_doctors where province = '" + ddlProvince.SelectedItem.ToString() + "'", conn); 

因爲當你看到你的代碼查詢是不正確的,看看你的代碼是不正確的

錯誤代碼:

SqlCommand comm = new SqlCommand("SELECT DOCTOR_NAME FROM emed_doctors where (" + ddlProvince.SelectedItem.ToString() + " ", conn); 

編輯:,如果你想顯示你DataTable中有你要麼需要通過記錄迴路,或者你需要使用的GridView該記錄

。 ..我想你錯過的事

在where子句中你錯過了提起你通過修改條件需要製成的過濾......我已經寫更新代碼名稱後上方之一。

MSDNGridView

+0

謝謝!我試圖改變它,但仍然沒有結果。 – Lyard 2012-03-26 06:16:11

+0

@Lyard - 再次檢查和調試代碼檢查您的查詢,因爲這是我想在你的代碼唯一的問題......檢查編輯也 – 2012-03-26 06:17:48

+0

我明白了。謝謝!那麼,我如何使用gridview?你能給我一個鏈接或什麼? – Lyard 2012-03-26 06:24:27

0

你說,點擊提交後,什麼都沒有發生。但在btnSub_Click中,我沒有看到任何顯示結果或更改頁面內容的任何內容。你應該將dt綁定到gridview等一些控件上。

+0

你什麼意思!? – Lyard 2012-03-26 06:50:41

+0

我的意思是@ abatishchev的版本。 – 2012-03-26 08:58:35