2014-09-13 93 views
0

对不起,我的英文不好。我昨天晚上写了代码。我的程序运行成功,但fill_model的答案不正确。它应该是不同型号的领域,但它显示了与特定品牌相关的所有型号。你有什么主意吗? 这里是代码:ComboBox未填充所需值

private void brand_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      fill_brand_txt(); 
      fill_model(); 
      model.Text = ""; 

     } 
     private void fill_brand_txt() 
     { 
      string cs = "Data Source=192.168.1.20;Initial Catalog=Test;User ID=sa;Password=Abc123;"; 
      string qu = "select id_kind from model where [email protected]"; 
      SqlConnection con = new SqlConnection(cs); 
      SqlCommand cmd = new SqlCommand(qu, con); 
      cmd.Parameters.AddWithValue("@brand1", brand.Text); 
      try 
      { 
       con.Open(); 
       SqlDataReader rd = cmd.ExecuteReader(); 
       rd.Read(); 
       brand_txt.Text = rd["id_kind"].ToString(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Error :", ex.Message); 

      } 
      finally 
      { 
       con.Close(); 
      } 
     } 
     private void fill_model() 
     { 
      string cs = "Data Source=192.168.1.20;Initial Catalog=Test;User ID=sa;Password=Abc123;"; 
      string que = "select model_name from model where [email protected]"; 
      SqlConnection con = new SqlConnection(cs); 
      SqlCommand cmd = new SqlCommand(que, con); 
      cmd.Parameters.AddWithValue("@id", brand_txt.Text); 
      con.Open(); 
      System.Data.DataTable dt = new System.Data.DataTable(); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      da.Fill(dt); 
      model.DisplayMember = "model_name"; 
      model.DataSource = dt; 
      con.Close(); 
     } 
+0

你的意思是使用brand_txt.Text'的'价值还是应一个不同的控件来读取值?顺便说一句,你应该在'con.Close()'后面调用'con.Dispose()'。 – 2014-09-13 15:14:37

+0

'id_kind'是你品牌的ID吗? – 2014-09-13 15:19:10

+0

fill_brand_txt中的brand_txt值更改是否成功? sql参数是否在fill_model中获得所需的值?你调试了吗? – Biri 2014-09-13 15:22:55

回答

0

如果保存你所有的信息在一个表,你想获得所有的模型名称,你可以用这个SQL命令:

SELECT model_name FROM model GROUP model_name; 
0

我我不知道我是否理解。你有类似的表,其中包含类似

{1, "printer"} 
{2, "scanner"} 
{3, "laptop"} 

等等。然后你有一个模型表,你有类似的东西

{3, "HP", "Probook1"} 
{3, "HP", "Probook2"} 
{1, "Samsung", "mlxxx"} 
{2, "HP", "whatever"} 

等等。

在字段中输入“HP”,在fill_brand_txt()中从模型表(您只读第一个值)中获得“3”,并在fill_model()中基于此选择所有“laptop”。

我想你混淆了一些东西。

如果您要根据您输入的品牌上市的所有车型,然后离开了fill_brand_txt并使用fill_model如下:

string que = "select model_name from model where [email protected]"; 
{...} 
cmd.Parameters.AddWithValue("@brand", brand.Text);