2012-08-23 4 views
0

xtragrids를 엔티티 프레임 워크와 함께 사용합니다. 2 SQL 테이블이 있습니다. gridControl1에는 partners 테이블이 표시되고 gridControl2에는 partner_contacts 테이블이 표시됩니다. 어떻게 할 수 있습니다 gridControl1 gridControl2 사이의 관계를 만들 수 있습니다. gridControl1에서 행을 클릭하면 gridControl2에 관련된 행을 표시하려고합니다.XtraGrid Master-Detail in separate grid

1 테이블 : 파트너 - PARTNERID - partnerName

2 테이블 :

 object obj = gridView1.GetRowCellValue(gridView1.GetSelectedRows()[0], gridView1.FocusedColumn.FieldName); 

     string obj2 = obj.ToString(); 

     var selectedPartner = valinor.partners.Where(p => p.partnerId = obj2).FirstOrDefault(); 
     if (selectedPartner != null) 
      gridControl2.DataSource = selectedPartner.partner_contacts; 
: partner_contacts - partner_contactsId - - partner_contactsName partner_contacts_partner_FK

public partial class frmPartnersList : DevExpress.XtraEditors.XtraForm 
{ 
    ValinorEntities valinor = new ValinorEntities(); 

    public frmPartnersList() 
    { 
     InitializeComponent(); 

     gridControl1.DataSource = valinor.partners; 
     gridControl2.DataSource = valinor.partner_contacts; 
    } 
} 

이 시도 6,

나는이 오류가 있었다 :

  • 그것이 대리자 형식이 아니기 때문에 '문자열을'입력 람다 식을 변환 할 수 없습니다

  • 암시 'INT'

  • 에 유형 '문자열을'변환 할 수 없습니다
  • 위임 'System.Func은'1 개 인자이 코드에 대한

을지지 않습니다 :(p => p.partnerId = obj2)

답변

0

gridcontrol1에서 FocusedRowChanged 이벤트를 사용할 수 있습니다. 집중 행 gridcontrol1

int partnerId=(int)gridview1.GetFocusedRowCellValue("PartnerID"); 

gridcontrol2.DataSource=valinor.partner_contacts.where(partner_contact=>partner_contact.PartnerId=partnerId); 

변경 예를 들어

당신이 관계는 내가 관계 이름을 가정

var selectedPartner=valinor.partners.where(p=>p.PartnerId=partnerId).FirstOrDefault(); 
if(selectedPartner!=null) 
gridcontrol2.datasource=selectedPartner.Contacts; 

다음 개체 모델에서 파트너 기관에 추가 한 경우 또는 ... 그것은 할 수있다 모델에 따라 다릅니다.