2011-09-19 52 views
0

这是我的代码;使用Linq to Entities在winforms应用程序中调用组合框,一个组合框依赖于另一个组合框

 comboBoxAdminVisit.DataSource = be.Events; 
     comboBoxAdminVisit.DisplayMember = "EventName"; 


     var fff = (from cc in be.Visitors 
        select cc.Attending).FirstOrDefault(); 

     var ggg = (from xx in be.Events 
        where xx.Id == fff 
        select xx.Id).FirstOrDefault(); 

     if (fff == ggg) 
     { 
      foreach (var name in comboBoxAdminName.Items) 
      { 
       comboBoxAdminName.Items.Add(name); 
      } 

cc.Attending是一个外键,它存储事件tabel的priomary键。我想从第一个组合框中选择一个事件,然后让第二个组件参与事件。提前致谢!

Events  Visitors 
------  -------- 
Id   Id 
Attendee(FK) Name 
EventName Company 
EventStart Car Reg 
EventEnd  Visiting 
+0

您可以将您的数据图?这将有助于建立实体之间的一些关系 – Samich

+0

我认为你在事件和访问者之间有多对多的关系 – Samich

回答

2

我不知道你的实体的确切结构,但这里是一个想法如何实现它:

private void Form1_Load(object sender, EventArgs e) 
{ 
    comboBoxAdminVisit.DataSource = be.Events; 
    comboBoxAdminVisit.DisplayMember = "EventName"; 
} 

private void comboBoxAdminVisit_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (comboBoxAdminVisit.SelectedItem != null) 
    { 
     Event selectedEvent = (Event)comboBoxAdminVisit.SelectedItem; 

     var visitors = (from cc in be.Visitors 
         where cc.Attending.Events.Contains(x => x.EnventId = selectedEvent.Id) 
         select cc); 

     comboBoxAdminName.DataSource = visitors; 
     comboBoxAdminName.DisplayMember = "Name"; 
    } 
} 
+0

感谢你的支持,这让我走上了正轨。它还没有和数据模型一起工作,但我会改变这种情况,当它完成时,我会标记为答案,可能明天。再次感谢! – Dan

+0

谢谢,只是不得不改变linq一点,它的工作。我编辑了你的答案以包含正确的linq。 – Dan

相关问题