2017-07-31 2 views
1

私はEntity Frameworkを使用しており、マスターテーブルの詳細レコードを表示しています。Entity Frameworkを使用してC#gridviewでマスター関連データを表示する方法

私はMasterBindingSourceDetailsBindingSourceと2つのフォームを持っています。

私がしようとしているのは、masterGridViewの選択されたデータに関連するdetailsGridViewを記入してください。

誰もが私をこのように案内できますか?

これは私がやったですが、私は私が行方不明です何

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

... masterGridviewが、詳細テーブルはマスターに関連する充填されていない埋めることができますよ!おかげ

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; } 
} 

、これは私が私の目標をachiveしようとしたものです:

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

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

答えて

2

それは、Entity Frameworkのには無関係です。自動マスタ - 2つのDataGridViewコントロールをBindingSourceコンポーネントで同期させるのは簡単です。 BindingSourceをの詳細BindingSourceと設定し、DataMemberの詳細BindingSourceを使用して、詳細コレクションの名前を指定するだけです。

このような何か:

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

私はこのようなDetailsDataGridViewをバインド行うとき、カウントおよびIsReadOnlyの(チェックボックスが)私はDataGridViewの上で参照フィールドのみです、私は間違って何をしているのですか? :/ – Licentia

+0

まあ、見ることはあなたのクラスを持つバインド可能なプロパティに依存します。マスターと詳細エンティティモデル(クラス)で質問を更新できますか? –

+0

実際のクラスで私の質問を編集しました – Licentia

関連する問題