WinForms DataGridView中的数据绑定多值控件

时间:2014-06-25 20:56:15

标签: .net winforms datagridview

我试图在DataGridView(WinForms)中实现多选ComboBox。我已经创建了一个相当基本的OwnerDraw ComboBox派生控件,它似乎工作正常。然后,我通过创建一个从DataGridViewColumn派生的类,在DataGridView中托管该控件。这一切都显示OK。我遇到的问题是数据绑定到新列。

DataGridView DataSource是一个BindingList< MyObject>。 MyObject有一个属性MyProperty,它是一个BindingList< long>。我将单独的DataSource传递给MultiSelectComboBox并设置DisplayMember和ValueMember,以便组合框正确查找MyProperty中值的描述(ValueMember是一个长标识符,DisplayMember是一个字符串描述)。

当DataGridView尝试将值提交回数据源时,我遇到了问题。 MultiSelectComboBox公开List< object>类型的SelectedValues属性。我将单元格的值设置为此值。因为ValueMember命名long属性,所以传回的对象实际上是List< long>。我得到一个InvalidCastException,框架尝试从List< long>进行强制转换。到BindingList< long>。这可能是因为数据绑定试图将MyProperty设置为单元格值。

任何人都可以给我一些关于如何绑定到BindingList的线索吗?单元托管控件(我的MultiSelectComboBox)是否必须查看其数据绑定,并且如果它绑定到BindingList,或者框架中是否有一些可能有帮助的支持,那么它们的行为会不同吗?

1 个答案:

答案 0 :(得分:0)

您是否曾尝试在BindingList构造函数中传递它,如下所示:

BindingList<long> myBindingList= new BindingList<long>(myList);