2012-03-26 4 views
1

のように私は、C#に新たなんだ。3 DropDownLists検索機能

私は現在、3 DropDownListsと送信ボタンを使用してC#での検索機能に取り組んでいます。ユーザーがDropDownListの項目を選択して「送信」をクリックすると、それぞれの選択のための表が印刷されます。

  1. 州、
  2. 市、
  3. 専門:

    は3 DropDownListsあります。

これは、選択に適した医師を検索します。たとえば、第1ドロップダウンリストの第1ドロップダウンリスト、第2シティーのcity1、第3の心理学者を選択します。送信ボタンが押されると、province1、city1にある利用可能な医師が印刷され、心理学者が専門になります。

私はすでにコードを持っていますが、それでもわかりますが、送信ボタンをクリックすると何も起こりません。誰か助けてくれますか?ここで

は、私がこれまで何をやったかです:

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 where where句の後にあなたがフィルタを作成する必要があるフィールドの名前を逃しています...私はその条件を変更することによって更新コードを書いています。

GridViewの場合はMSDNを参照してください。

+0

ありがとう!私はそれを変更しようとしましたが、まだ結果はありませんでした。 – Lyard

+0

@Lyard - もう一度チェックし、コードをデバッグしてクエリをチェックしてください。これはコード内で唯一の問題だと思います...編集を確認しても –

+0

です。ありがとう!だから、どのように私はgridviewを使用するのですか?あなたは私にリンクや何かを教えてもらえますか? – Lyard

0

あなたは送信をクリックした後、何も起こらないと言いました。しかし、btnSub_Clickでは、結果を表示したり、ページ上の何かを変更したりすることはありませんでした。あなたはグリッドビューなどのコントロールにdtをバインドする必要があります。

+0

どういう意味ですか? – Lyard

+0

私の手段は@ abatishchevの版と同じです。 –