【问题标题】:databinding multi-valued control in WinForms DataGridViewWinForms DataGridView中的数据绑定多值控件
【发布时间】:2014-06-25 20:56:14
【问题描述】:

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

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

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

谁能给我一些关于绑定到 BindingList 应该如何工作的线索?单元格托管控件(我的 MultiSelectComboBox)是否必须查看其数据绑定并在绑定到 BindingList 时表现出不同的行为,或者框架中是否有一些可能对此有所帮助的支持?

【问题讨论】:

    标签: .net winforms datagridview


    【解决方案1】:

    您是否尝试过像这样在 BindingList 构造函数中传递它:

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

    【讨论】:

      猜你喜欢
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多