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";
有点丑陋,也许,但它的工作原理..
谢谢Laviak,我已经回过头来使用idents,但如果情况再次出现,我会这样做。 – Marlon 2011-01-14 14:57:48