Enlazar DataGridView a las entidades de forma "maestra-detallada"
Estoy tratando de establecer una relación maestro-detalle entre dos DataGridView. Tengo un EntityModel con dos entidades conectadas por la asociación "ClientComissions". Se generaron a partir de una base de datos existente y tienen propiedades de navegación que funcionan bien. Prueba (aplicación de consola utilizando el mencionado modelo de entidad):
<code> 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); } } </code>
Pero no puedo enlazar dos DataGridViews de forma maestra y detallada en el formulario de Windows:
<code> 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?"; } } </code>
Sé que hay un BindingContext, que debe hacer todo el trabajo con CurrencyManager, sin necesidad de un código escrito a mano.
Me he quedado aquí por mucho tiempo. Ayuda por favor.
UPD:
<code> private void AnswerFromStackRefactored() { using (var context = new MnxEntities()) { clientBindingSource.DataSource = context; clientBindingSource.DataMember = "Clients"; navComissionsBindingSource.DataSource = clientBindingSource; navComissionsBindingSource.DataMember = "NavComissions"; } } </code>
este código carga Comisiones solo una vez, para el primer cliente en la cuadrícula. Pero cuando cambio la fila actual en la cuadrícula de clientes, no hay más consultas a DB y navComissionsGrid siempre muestra la comisión para el primer cliente. :(