2017-07-31 54 views
1

我正在使用實體框架並堅持顯示主表的詳細記錄。如何使用實體框架在C#gridview中顯示主相關數據

我有一個MasterBindingSourceDetailsBindingSource以及兩個DataGridView在窗體上。

我想要做的是:在masterGridView上填寫與所選數據相關的detailsGridView

任何人都可以通過這個指導我嗎?

這是我做了什麼,我能夠填補masterGridview但細節表中未填寫相關的主...

MasterTbBindingSource.DataSource = lobo.MasterTb.Include("DetailTb").ToList(); 

我缺少什麼?由於

UPDATE

public partial class CONTACTS_BASE//Master 
{ 
    public CONTACTS_BASE() 
    { 
     this.ORDERS = new HashSet<ORDER>(); 
    } 

    public int CB_REFNO { get; set; } 
    public string CB_NAME { get; set; } 
    public string CB_ID_NO { get; set; } 
    public string CB_AGE { get; set; } 

    public virtual ICollection<ORDER> ORDERS { get; set; } 
} 

public partial class ORDER //Detail 
{ 
    public int OR_REFNO { get; set; } 
    public string OR_PROD_CODE { get; set; } 
    public Nullable<int> OR_M_REFNO { get; set; } 

    public virtual CONTACTS_BASE CONTACTS_BASE { get; set; } 
} 

,這就是我努力才達到我的目標:

using (var lobo = new MyEfTestEntities()) 
{ 
      CONTACTS_BASEBindingSource.DataSource = lobo.CONTACTS_BASE.Include("ORDERS").ToList(); 

      ORDERBindingSource.DataSource = CONTACTS_BASEBindingSource; 
      ORDERBindingSource.DataMember = "ORDERS"; 
} 

回答

2

這是無關的實體框架。 Automatic Master - 兩個DataGridView控件與BindingSource組件的詳細同步非常簡單。您只需將BindingSource的主設備設置爲詳細信息BindingSourceDataSource,並使用詳細信息BindingSourceDataMember指定詳細信息集合的名稱。

事情是這樣的:

MasterTbBindingSource.DataSource = lobo.MasterTb.Include("DetailTb").ToList(); 
DetailsBindingSource.DataSource = MasterTbBindingSource; 
DetailsBindingSource.DataMember = "DetailTb"; 
+0

當我做綁定DetailsDataGridView這樣,計數和IsReadOnly(複選框)只有場我就在DataGridView看到,我在做什麼錯? :/ – Licentia

+0

那麼,你看到什麼取決於什麼可綁定的屬性有你的類。你能用主和實體模型(類)更新這個問題嗎? –

+0

剛剛編輯了我的問題與實際類 – Licentia