如何在多对多关系中的两个表之间创建DataRelation?

时间:2017-03-25 18:35:59

标签: c# sql ado.net

我已经在互联网上搜索了很多小时关于我遇到的这个问题,设法找到了一些与我正在搜索的内容相近的东西,但却找不到其中的一部分。

我有2对多对多关系的表。 -Event(id,col1,col2) -Participant(id,col1,col2)

他们之间的联系在表中: -Signup(id,idEvent,idParticipant)

现在,我想拥有两个DataGridView。在程序运行时,一个datagridview将填满Event表中的数据。当我从该datagridview中单击一行时,我想在第二个datagridview中显示所有参与者,参与者表中已注册参加活动。

这是我到目前为止所做的事情:

ds.Tables.Add(ctrl.EventToDataTable());
        ds.Tables.Add(ctrl.SignUpToDataTable());
        ds.Tables.Add(ctrl.ParticipantToDataTable());


        DataRelation dr = new DataRelation("EventSignup",
                                            ds.Tables["Event"].Columns["Id"],
                                            ds.Tables["Signup"].Columns["idEvent"],true);


        ds.Relations.Add(dr);

        dr =              new DataRelation("SignupParticipant",
                                            ds.Tables["Participant"].Columns["Id"],
                                            ds.Tables["Signup"].Columns["idParticipant"], true);


        ds.Relations.Add(dr);


        bindingSourceEvent.DataSource = ds;
        bindingSourceEvent.DataMember = "Event";

        bindingSourceParticipant.DataSource = bindingSourceEvent;
        bindingSourceParticipant.DataMember = "EventSignup.SignupParticipant";   // Here it's the problem

        gridEvent.DataSource = bindingSourceEvent;     

        gridParticipant.DataSource = bindingSourceParticipant;

我认为我创建的两个DataRelation都很好,但我不知道如何在bindingSourceParticipant.DataMember中引用它们。

如果在bindingSourceParticipant.DataMember中我将它设置在EventSignup,它会在我从第一个数据网格视图中选择内容时显示注册表中的所有行。

如何在Event表的第二个datagridview行中显示与第一个datagridview中选择的行相对应的行?

谢谢!

0 个答案:

没有答案