如何从第一个组合框中获取SelectedValue以填充c#winforms中第二个组合框中的数据

时间:2014-03-15 06:08:04

标签: c# .net winforms combobox selectedindexchanged

我在我的一个c#WinForms项目中有2个ComboBox,首先包含父类别,并且根据在第一个组合框中选择的类别,我需要在第二个组合框中填充它们的子类别。

下面是我用来填充First comboBox的代码。

private DataTable FillProductGroupID(int ParentID = -1)
        {
            DataTable dt = new DataTable();
            using (SqlConnection connection = new SqlConnection(@"server=***; uid=***; pwd=***; database=lowprice"))
            {
                try
                {
                    using (SqlCommand command = new SqlCommand("user_GetAllProductGroup", connection))
                    {
                        connection.Open();
                        command.CommandType = CommandType.StoredProcedure;
                        command.Parameters.AddWithValue("@ParentID", ParentID);
                        SqlDataAdapter adapter = new SqlDataAdapter(command);

                        adapter.Fill(dt);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                finally
                {
                    connection.Close();
                }
            }
            return dt;
        }

这是我的FormLoad事件,其中第一个组合框的绑定发生。

 cbParentCategories.DataSource = FillProductGroupID();
            cbParentCategories.DisplayMember = "Name";
            cbParentCategories.ValueMember = "Id";

这是我的第一个组合框的SelectedIndexChangedEvent,我正在填充第二个组合框。

cbChildCategories.DataSource = 
FillProductGroupID(int.Parse(cbParentCategories.SelectedValue.ToString())); //Form Load Error Here.
            cbChildCategories.DisplayMember = "Name";
            cbChildCategories.ValueMember = "Id";

在表单加载上,它只是说Input string was not in a correct format

我有两个问题:

  1. 为什么要在FormLoad上检查SelectedIndexChangedEvent的selectedValue,它应该是我选择第一个组合框时。
  2. 在第一个组合框的selectedindexchanged事件中获取第一个组合框的选定值的正确方法是什么。

任何人都可以帮我根据第一个组合框的选择来填充子类别。

1 个答案:

答案 0 :(得分:2)

在线下

 cbParentCategories.DataSource = FillProductGroupID();

导致SelectedIndexChangedEvent的触发事件。并且所选项目无效转换为int。所以而不是使用SelectedIndexChangedEvent。您可以尝试使用

SelectionChangeCommitted Event

仅当用户更改combobox

中的所选项目时才会调用此事件