DataGridView具有特定于行的DataGridViewComboBoxColumn内容

时间:2009-09-01 12:24:38

标签: c# winforms datagridview combobox

所以我有类似下面的数据结构(省略构造函数)

class Child {
    public string Name { get; set; }
    public int Age { get; set; }
}

class Parent {
    public string Name { get; set; }
    public List <Child> Children { get; private set; }    // never null; list never empty
    public Child FavoriteChild { get; set; }              // never null; always a reference to a Child in Children
}

List < Parent > Parents;

我想要做的是显示一个DataGridView,其中每一行都是Parent列表中的Parent。每行应该有两列:一个显示父母姓名的文本框和一个包含父母孩子的DataGridViewComboBoxColumn,用户可以从中选择父母最喜欢的孩子。

我想我可以手动完成所有这些工作,但我想通过或多或少的标准数据绑定来完成所有这些工作。将DataGridView绑定到父列表很容易,并且很容易将选定的子节点绑定到FavoriteChild属性。

给我带来困难的部分是,看起来Combo Box专栏想要绑定到所有行上所有组合框内容的一个数据源。我希望组合框的每个实例都绑定到每个父项的子项列表。

我是C#/ Windows Forms的新手,所以我可能会遗漏一些明显的东西。或者可能是“你不能从这里到达那里。”

制作所有孩子的单独列表并按父母过滤它并不太难;我现在正在研究这种可能性。这是可行的,还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

看起来this question的答案让我走上正轨。我将处理程序附加到RowsAdded事件并手动设置组合框数据源。