我正在尝试在两个 DataGridView 之间建立主从关系。我有一个 EntityModel,其中有两个由“ClientComissions”协会连接的实体。它们是从现有数据库生成的,并且具有运行良好的导航属性。证明(使用提到的 EntityModel 的控制台应用程序):
using (var context = new MnxEntities())
{
Client client = context.Clients.FirstOrDefault();
// profiler: "SELECT TOP (1) ... FROM [Clients] AS [c]" - Ok!
Console.WriteLine("Client: {0}", client.Name);
foreach (Comission comission in client.NavComissions)
// profiler: "SELECT ... FROM [Comissions] WHERE [StateCode] = '20971504'" - Ok!
{
Console.WriteLine("Agreement number: {0}", comission.Dog_Num);
}
}
但是我不能在 windows 窗体上以主从方式绑定两个 DataGridView:
private void tabComissions_Enter(object sender, EventArgs e)
{
using (var context = new MnxEntities())
{
clientDataGridView.DataSource = context.Clients;
comissionsDataGridView.DataSource = clientDataGridView.DataSource;
comissionsDataGridView.DataMember = "WHAT SHOULD BE HERE?";
}
}
我知道有一个 BindingContext,它必须使用 CurrencyManager 完成所有工作,不需要手写代码。
我已经在这里呆了很长时间了。请帮忙。
升级版:
private void AnswerFromStackRefactored()
{
using (var context = new MnxEntities())
{
clientBindingSource.DataSource = context;
clientBindingSource.DataMember = "Clients";
navComissionsBindingSource.DataSource = clientBindingSource;
navComissionsBindingSource.DataMember = "NavComissions";
}
}
此代码仅为网格中的第一个客户端加载一次佣金。但是,当我更改客户端网格中的当前行时,不再查询数据库,并且 navComissionsGrid 始终显示第一个客户端的佣金。:(