C# - 在设计时设置数据绑定级联组合框

时间:2011-07-27 20:39:01

标签: c# winforms combobox databound

我认为这是一个简单的问题,但经过多次搜索后找不到合适的例子。 简而言之,它是一个Windows窗体应用程序,在窗体上有2个数据绑定组合框,第一个用于“部门”,第二个用于“部分”。这些组合分别绑定到SQL数据库中的相应表。组合应该在用户从第一个选择部门的情况下操作,这导致第二个组合被过滤以仅显示属于该部门的部分。 (换句话说,这是经典的“级联”组合框问题)。 我的经验最初是使用Delphi,这是一个简单的设计时间问题。

然而,在C#中,我被困住了,无法让它工作。我原以为这可以在设计时完成,可能在SelectedIndexChanged事件后面有一些最小的代码。如果有人有一个基本的(形式,2个组合框,简单的数据源),我会非常感激,他们可以指出这个例子。

谢谢,詹姆斯

2 个答案:

答案 0 :(得分:1)

ComboBox cbDepartment = new ComboBox();
cbDepartment.Name = "cbDepartment";
cbDepartment.DataSource = dsDepartments;
cbDepartment.SelectedIndexChanged = new System.EventHandler(cbDepartment_SelectedIndexChanged);

private void cbDepartment_SelectedIndexChanged(object sender, System.EventArgs e) {
    cbSection.DataSource = GetSection(cbDepartment.SelectedItem.Value);
}

您可以尝试上述内容。

答案 1 :(得分:0)

您没有指定绑定的内容。我总是绑定到对象,所以我就是这样做的:

在表单加载事件中:

ddlParent.DataSource = new BindingSource(myIEnumerable, null);

父组合框的事件处理程序:

private void ddlParent_SelectedIndexChanged(object sender, EventArgs e)
{
    ddlChild.DataSource = new BindingSource((MyBoundType)ddlParent.SelectedItem, null);
}

我不知道在设计时如何做到这一点。

您应该覆盖绑定到下拉列表的对象的ToString()方法,以控制组合框中显示的文本。