代码之家  ›  专栏  ›  技术社区  ›  Damien

实体框架-将组合框绑定到规范化的表字段

  •  1
  • Damien  · 技术社区  · 16 年前

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

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

    谢谢

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

    3 回复  |  直到 16 年前
        1
  •  2
  •   Daniel Brückner    16 年前

    您想将集合绑定到控件,并将相关实体(即DataConfidenceLevel类型的导航属性DataConfidence Level)作为显示成员吗?

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

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

        2
  •  2
  •   Damien    16 年前

    答案比我预想的要简单。

        comboBox.DataBindings.Add(new Binding("SelectedItem", this.dataBindingSource, "DataConfidenceLevel", true));
        comboBox.DataSource = db.DataConfidenceLevel;
        comboBox.DisplayMember = "ConfidenceDescription";
        comboBox.ValueMember = "ConfidenceLevelID";
    
        3
  •  1
  •   RobS    16 年前

    first one second entry 展示了如何将其全部固定在一起。

    我不确定这是否符合“正确的方式”,但这肯定是一种方法:)如果这对你有帮助,我很乐意收到回复!

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

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

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

    省略。Include()表示没有任何内容会绑定到该列。