【问题标题】:Entity Framework - Bind Combobox to Normalised Table Field实体框架 - 将组合框绑定到规范化表字段
【发布时间】:2009-04-01 02:08:50
【问题描述】:

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

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

谢谢

Entity Designer http://img19.imageshack.us/img19/374/entity.png

【问题讨论】:

  • 您是否也希望能够编辑/更改这种关系.. 还是只显示友好的名称?
  • 只显示友好名称

标签: c# wpf database entity-framework data-binding


【解决方案1】:

您希望将集合绑定到控件并拥有一个相关实体 - 即 DataConfidenceLevel 类型的导航属性 DataConfidenceLevel - 作为显示成员?

这通常可以通过重写 ToString() 来实现,

public partial class DataConfidenceLevel
{
   public override String ToString()
   {
      return this.ConfidenceDescription;
   }
}

然后将 DisplayMember 设置为要绑定的实体的 DataConfidenceLevel 属性。

【讨论】:

  • 我正在努力让这个工作正常进行。我无法相信应该如此简单的事情竟然如此困难。我已经覆盖了 DataConfidenceLevel 类的 ToString 方法,但是我究竟将什么用于组合框的数据源以及我使用哪些显示/值成员?
【解决方案2】:

答案比我预期的要简单。

    comboBox.DataBindings.Add(new Binding("SelectedItem", this.dataBindingSource, "DataConfidenceLevel", true));
    comboBox.DataSource = db.DataConfidenceLevel;
    comboBox.DisplayMember = "ConfidenceDescription";
    comboBox.ValueMember = "ConfidenceLevelID";

【讨论】:

    【解决方案3】:

    我写了两篇关于处理这种情况的方法的博客文章 - 它适用于 ASP.net,但它可能会对您有所帮助。

    这里是帖子,first one 更多是对问题的介绍,second entry 显示如何将它们固定在一起。

    我不确定这是否是“正确的方法”,但它肯定是一种方法 :) 如果这对您有帮助,我很高兴收到回复!

    编辑:阅读 danbruc 的答案后,您当然可以按照他的建议覆盖 Navigation 属性上的 ToString(只读),但这只是部分答案。

    除非您的 LINQ 查询包含“Include”语句,否则这将不起作用,例如

    var listOfThings = (from t in db.Thingy
                        .Include("DataConfidenceLevel")
                        select t).ToList();
    

    省略 .Include() 意味着没有任何内容会绑定到该列。

    【讨论】:

    • 我不是 ASP 开发人员,但您在数据绑定控件中显示相关实体的方式似乎很复杂。我将对 ASP 使用覆盖的 ToString() 方法处理数据绑定实体进行评估,方法与 WinForms 相同。
    • 是的,但我不确定您需要做什么才能进行更改/更新实体
    • 我会尝试ToString的方法,看看我是否遇到任何障碍(仍然存在确保导航成员加载与否的问题)。
    • 您的博客链接不再可用
    • 抱歉.. 帖子已迁移到 sanderstechnology.com。应该可以从主页搜索它们 - 抱歉。
    猜你喜欢
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多