ComboBox未填充所需的值

时间:2014-09-13 14:52:05

标签: c# combobox

抱歉我的英语不好。我昨晚写了代码。我的程序运行成功,但fill_model的答案不正确。它应该是具有不同型号的现场,但它显示了与特定品牌相关的所有型号。你有什么主意吗? 这是代码:

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 brand_name=@brand1";
            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 id_kind=@id";
            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();
        }

2 个答案:

答案 0 :(得分:0)

如果您已将所有信息保存在单个表中,并且想要获取所有model_name,则可以使用此SQL命令:

SELECT model_name FROM model GROUP model_name;

答案 1 :(得分: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 brand=@brand";
{...}
cmd.Parameters.AddWithValue("@brand", brand.Text);