[英]Entity Framework - Bind Combobox to Normalised Table Field
我目前正在尝试将实体绑定到表单,但是我希望将 DataConfidenceLevel(见下文)绑定到 combobox,并以 ConfidenceDescription 作为显示成员。 填充 combobox 的正确方法是什么?
(我目前正在使用 WPF 但可以接受 Winforms 答案)
谢谢
您想将集合绑定到控件并具有相关实体 - 即 DataConfidenceLevel 类型的导航属性 DataConfidenceLevel - 作为显示成员?
这通常通过重写 ToString() 来实现,非常简单,
public partial class DataConfidenceLevel
{
public override String ToString()
{
return this.ConfidenceDescription;
}
}
而不是将 DisplayMember 设置为要绑定的实体的 DataConfidenceLevel 属性。
答案比我预期的要简单。
comboBox.DataBindings.Add(new Binding("SelectedItem", this.dataBindingSource, "DataConfidenceLevel", true));
comboBox.DataSource = db.DataConfidenceLevel;
comboBox.DisplayMember = "ConfidenceDescription";
comboBox.ValueMember = "ConfidenceLevelID";
我写了两篇关于处理这种情况的方法的博客文章——它适用于 ASP.net,但它可能会对你有所帮助。
这是帖子, 第一个更多的是对问题的介绍, 第二个条目显示了如何将它们固定在一起。
我不确定这是否符合“正确方法”的条件,但这肯定是一种方法:)如果这对您有帮助,我很高兴收到回复!
编辑:阅读 danbruc 的答案后,您当然可以按照他的建议覆盖 Navigation 属性上的 ToString (只读),但这只是部分答案。
除非您的 LINQ 查询包含“包含”语句,否则这将不起作用,例如
var listOfThings = (from t in db.Thingy
.Include("DataConfidenceLevel")
select t).ToList();
省略 .Include() 意味着没有任何内容会绑定到该列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.