我在我的一个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
。
我有两个问题:
任何人都可以帮我根据第一个组合框的选择来填充子类别。
答案 0 :(得分:2)
在线下
cbParentCategories.DataSource = FillProductGroupID();
导致SelectedIndexChangedEvent
的触发事件。并且所选项目无效转换为int。所以而不是使用SelectedIndexChangedEvent
。您可以尝试使用
SelectionChangeCommitted Event
仅当用户更改combobox