【发布时间】:2019-02-26 01:33:52
【问题描述】:
我有两个相关的表(类别和子类别)。所以我在 Windows 窗体上有 2 个 ComboBox 控件。这 2 个 ComboBox 在父子(或类别子类别)关系中相关。例如,我有一个 ComboBox 包含供用户选择的类别列表(父)和另一个包含子类别列表的 ComboBox(子)。 现在我需要:如果用户从第一个组合框中选择类别,那么在第二个组合框中必须出现与该类别相关的子类别。 例如:
| Category
| cat_id | cat_name |
| 1 | Car |
| 2 | Car1 |
| 3 | Car2 |
| 4 | Car3 |
及子类别
| SubCategory
| scat_id | scat_name | cat_id |
| 1 | sCar | 1 |
| 2 | sCar1 | 1 |
| 3 | sCar2 | 3 |
| 4 | sCar3 | 1 |
这是两个相关的表结构。 我有这个 C# 代码:
private void SInfo_Load(object sender, EventArgs e)
{
using (var context = new StBaseSQLEntities())
{
metroComboBox1.DataSource = context.Category.ToList();
metroComboBox1.DisplayMember = "cat_name";
metroComboBox1.ValueMember = "cat_id";
//SubCategory
metroComboBox2.DataSource = context.SubCategory.ToList();
metroComboBox2.DisplayMember = "scat_name";
metroComboBox2.ValueMember = "scat_id";
}
}
我是 C# Windows 窗体的新手,所以我不知道如何执行此操作。如果我从类别组合框中选择 1,那么我的第二个组合框需要在子类别组合框中显示属于 1st id 的子类别。 如何在 C# win 表单中获得结果?
【问题讨论】:
-
您必须使用 MetroComboBox1 SelectedIndexChanged 或 SelectedValueChanged 事件来设置 MetroComboBox2 的数据源,使用该值。我猜,那个 DataSource 可能是 LINQ 的
context.SubCategory.Where(x => x.scat_id = metroComboBox1.SelectedValue).ToList());类似的东西。