基于第一个组合框中的选择,C#显示组合框中的列表

时间:2018-12-06 05:06:30

标签: c#

美好的一天。

我只是在寻找解决问题的方法。我只是尝试制作我的第一个程序,而我遇到了这个问题。我有2个组合框,第一个是供应商列表,第二个是项目列表。现在,我需要根据第一个组合框过滤将在第二个组合框中显示的内容,但仍在第二个组合框中显示。它始终显示数据库中列出的所有项目。所有数据都来自SQL数据库,下面是我正在使用的代码:

private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)    
{
  conn.Open();
  SqlCommand cmd = conn.CreateCommand();
  cmd.CommandType = CommandType.Text;
  cmd.CommandText = "select * from tblmaster where Supplier = '" + comboBox3.SelectedItem.ToString() + "'";
  cmd.ExecuteNonQuery();
  DataTable dt = new DataTable();
  SqlDataAdapter Da = new SqlDataAdapter(cmd);
  Da.Fill(dt);

  foreach(DataRow dr in dt.Rows) {
    comboBox5.Items.Add(dr["ProductCode"].ToString());
  }

  conn.Close();
}

1 个答案:

答案 0 :(得分:0)

尝试在循环之前清除项目。

private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)    
{
  conn.Open();
  SqlCommand cmd = conn.CreateCommand();
  cmd.CommandType = CommandType.Text;
  cmd.CommandText = "select * from tblmaster where Supplier = '" + comboBox3.SelectedItem.ToString() + "'";
  cmd.ExecuteNonQuery();
  DataTable dt = new DataTable();
  SqlDataAdapter Da = new SqlDataAdapter(cmd);
  Da.Fill(dt);

  comboBox5.Items.Clear();
  foreach(DataRow dr in dt.Rows) {
    comboBox5.Items.Add(dr["ProductCode"].ToString());
  }

  conn.Close();
}