填补第二组合框选择在窗口级联组合框改变文本形式使用C#(fill textbox on second

2019-10-21 09:45发布

我在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();
          }
      }
  }

我在这里停留。 请帮忙。

Answer 1:

Try changing SelectedIndex = -1 to SelectedItem = -1 in Purchase_Load and ComboBox1_SelectedIndexChanged.



文章来源: fill textbox on second combobox selection changed in cascading combobox in windows form using c#