繁体   English   中英

实体框架 - 将 Combobox 绑定到规范化表字段

[英]Entity Framework - Bind Combobox to Normalised Table Field

我目前正在尝试将实体绑定到表单,但是我希望将 DataConfidenceLevel(见下文)绑定到 combobox,并以 ConfidenceDescription 作为显示成员。 填充 combobox 的正确方法是什么?

(我目前正在使用 WPF 但可以接受 Winforms 答案)

谢谢

实体设计器 http://img19.imageshack.us/img19/374/entity.png

您想将集合绑定到控件并具有相关实体 - 即 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM