我目前正在尝试将实体绑定到一个表单但是我希望将DataConfidenceLevel(见下文)绑定到一个以ConfidenceDescription作为显示成员的组合框。填充组合框的正确方法是什么?
(我目前正在使用WPF,但Winforms答案是可以接受的)
由于
Entity Designer http://img19.imageshack.us/img19/374/entity.png
答案 0 :(得分:2)
您想要将一个集合绑定到一个控件并拥有一个相关的实体 - 即DataConfidenceLevel类型的导航属性DataConfidenceLevel - 作为显示成员吗?
通常可以通过覆盖ToString(),
来实现public partial class DataConfidenceLevel
{
public override String ToString()
{
return this.ConfidenceDescription;
}
}
并将DisplayMember设置为要绑定的实体的DataConfidenceLevel属性。
答案 1 :(得分:2)
答案比我预期的要简单。
comboBox.DataBindings.Add(new Binding("SelectedItem", this.dataBindingSource, "DataConfidenceLevel", true));
comboBox.DataSource = db.DataConfidenceLevel;
comboBox.DisplayMember = "ConfidenceDescription";
comboBox.ValueMember = "ConfidenceLevelID";
答案 2 :(得分:1)
我写了两篇关于处理这种情况的方法的博客文章 - 它适用于ASP.net,但它可能会帮助你。
以下是帖子,first one更多是对问题的介绍,second entry显示了如何将它们整合在一起。
我不确定这是否属于“正确的方法”,但它肯定是一种方法:)我很乐意回复这是否有助于你解决问题!
编辑:在阅读了danbruc的答案后,您当然可以按照他的建议覆盖导航属性上的ToString(只读),但这只是部分答案。
除非您的LINQ查询包含“Include”语句,例如
,否则这将不起作用var listOfThings = (from t in db.Thingy
.Include("DataConfidenceLevel")
select t).ToList();
省略.Include()意味着什么都不会绑定到列。