Datagridview组合框业务对象更新参考

问题描述:

我最近问了这个问题on here并得到了答案。不过,我现在试图在DataGridView上应用相同的逻辑,该DataGridView绑定到Curriculum对象的BindingList。课程类具有年份类型的属性。我正在尝试使用ComboBoxColumn来更新课程对象具有多年的参考。Datagridview组合框业务对象更新参考

该组合框绑定到BindingList < T>年,如果我设置了显示成员或值成员,则它会出错,因此我将它们留为空。这样做datagridview成功加载并正确显示数据(我覆盖了year类的ToString方法)。但是,如果我从组合框中选择另一个年份对象,只要它结束编辑就会抛出异常,并说它不能将字符串转换为年份。

它看起来像我需要一个TypeConverter来做到这一点,但问题是组合框显示一个描述性的值,我不能保证将是唯一的当年对象 - 所以我没有办法得到一年来自给定字符串的对象。

有没有人像这样的情况下有过任何经验,它一定是一件很常见的事情想做,但谷歌在这个场合失败了我。

Marlon

here同样的问题。似乎组合框中的对象绑定无法正常工作,您必须指定一个ValueMember。

对于我工作的特定项目,我来到了,这是不值得实现自定义类型说明符的conculsion,所以反而,我使用的是相当可怕的黑客:

在我是实体结合,我有以下几点:

class TestEntity 
{ 
    public TestEntity BindingHack_ValueMember 
    { 
     get 
     { 
      return this; 
     } 
    } 
    public string BindingHack_DisplayMember 
    { 
     get 
     { 
      return this.ToString(); 
     } 
    } 
} 

而列的数据绑定看起来是这样的:

column.DataPropertyName = "Foo"; 
column.DisplayMember = "BindingHack_DisplayMember"; 
column.ValueMember = "BindingHack_ValueMember"; 

有点丑陋,也许,但它的工作原理..

+0

谢谢Laviak,我已经回过头来使用idents,但如果情况再次出现,我会这样做。 – Marlon 2011-01-14 14:57:48