使用c#在windows窗体中的级联组合框中更改第二个组合框选择的填充文本框

时间:2014-12-06 15:39:37

标签: winforms sql-server-2008 c#-4.0

我在Windows窗体应用程序中有2个级联组合框。我有价格和单位的文本框。当我选择第一个组合框时,第二个组合框就会被填充。我希望文本框的价格和单位只在第二个组合框选择中填充。 我的问题是当表单加载时,两个文本框都填充了表中的值而不是组合框选择更改。

我的代码是:

private void Purchase_Load(object sender, EventArgs e)
    {

        // TODO: This line of code loads data into the 'supplierDataSet.Supplier' table. You can move, or remove it, as needed.
        this.supplierTableAdapter.Fill(this.supplierDataSet.Supplier);
        fillName();

        comboBoxName.SelectedIndex = -1;

    }



   private void fillName()
   {
       string str = "Select distinct Item_Name from Item";
       using (SqlConnection con = new SqlConnection(@"Data Source=ashish-pc\;Initial Catalog=HMS;Integrated Security=True"))
       {
           using (SqlCommand cmd = new SqlCommand(str, con))
           {
               using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
               {
                   DataTable dtItem = new DataTable();
                   adp.Fill(dtItem);

                    comboBoxName.DataSource = dtItem;
                   comboBoxName.DisplayMember = "Item_Name";
                   comboBoxName.ValueMember = "Item_Name";

               }
           }
       }
   }
   private void fillMake()
   {
       string str = "Select Item_Make from Item Where Item_Name=@Item_Name";
        using (SqlConnection con = new SqlConnection(@"Data Source=ashish-pc\;Initial Catalog=HMS;Integrated Security=True"))
        {

            using (SqlCommand cmd = new SqlCommand(str, con))
            {
                cmd.Parameters.AddWithValue("@Item_Name", comboBoxName.Text);
                using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
                {
                    DataTable dtItem = new DataTable();
                    adp.Fill(dtItem);
                    comboBoxMake.DataSource = dtItem;
                    comboBoxMake.ValueMember = "Item_Make";
                    comboBoxMake.DisplayMember = "Item_Make";


                }
            }
        }

   }

  private void comboBoxName_SelectedIndexChanged_1(object sender, EventArgs e)
  {
      if (!string.IsNullOrEmpty(comboBoxName.Text))
      {
          comboBoxMake.Enabled = true;
          fillMake();
          comboBoxMake.SelectedIndex = -1;
      }
  }

  private void comboBoxMake_SelectedIndexChanged_1(object sender, EventArgs e)
  {
      if (!string.IsNullOrEmpty(comboBoxMake.Text))
      {
          textBoxPrice.Enabled = true;
          textBoxUoM.Enabled = true;

      }

      SqlConnection con = new SqlConnection(@"Data Source=ashish-pc\;Initial Catalog=HMS;Integrated Security=True");
      SqlCommand cmd = new SqlCommand("Select * from Item Where Item_Make='" + comboBoxMake.Text + "' AND Item_Name='" + comboBoxName.Text + "'", con);
      SqlDataReader reader;
      try
      {
          if (con.State == ConnectionState.Closed)
          {
              con.Open();
          }
          reader = cmd.ExecuteReader();
          while (reader.Read())
          {
              textBoxPrice.Text = Convert.ToString(reader["Price"]);
              textBoxUoM.Text = Convert.ToString(reader["Unit"]);
          }
      }
      catch (Exception ex)
      {
          MessageBox.Show(ex.Message);
      }
      finally
      {
          if (con.State == ConnectionState.Open)
          {
              con.Close();
          }
      }
  }

我被困在这里。请帮忙。

1 个答案:

答案 0 :(得分:0)

尝试在Purchase_Load和ComboBox1_SelectedIndexChanged中将SelectedIndex = -1更改为SelectedItem = -1。