【问题标题】:C# - Setting up data-bound cascading combo boxes at design timeC# - 在设计时设置数据绑定级联组合框
【发布时间】:2012-03-16 04:41:19
【问题描述】:

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

但是,在 C# 中,我被卡住了,无法让它工作。我原以为这可以在设计时通过 SelectedIndexChanged 事件背后的一些最少代码来完成。如果有人能提供一个基本的(表单、2 个组合框、简单数据源)示例,我将不胜感激。

谢谢,詹姆斯

【问题讨论】:

标签: c# winforms combobox databound


【解决方案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);
}

你可以试试上面的方法。

【讨论】:

    【解决方案2】:

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

    在表单加载事件中:

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

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

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

    我不知道在设计时有什么办法。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 2013-03-18
      • 2011-03-24
      • 2013-01-16
      • 1970-01-01
      • 2013-03-01
      相关资源
      最近更新 更多