簡體   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