2016-05-07 8 views
0

Ich habe die example von Microsoft implementiert, die zwei Tabellen behandelt: Master und Detail.Master/Details Layout, das Multiple Choice in der Master-Tabelle ermöglicht

Ich mag, wie es ermöglicht, das Detailraster automatisch zu füllen, entsprechend der Auswahl im Vorlagengitter. Was aber, wenn ich im Master-Grid mehrere Kategorien (im Beispiel "Kunden") auswählen und Details für alle erhalten möchte?

Was wäre der beste Weg, um dieses Verhalten zu implementieren?

Antwort

0

In diesem Fall müssten Sie die Filterung selbst durchführen. Anstatt das untergeordnete Gitter an die Relation zu binden, binden Sie es an die untergeordnete Tabelle. Sie würden dann das entsprechende Ereignis des übergeordneten Rasters behandeln und dann die untergeordneten Daten basierend auf den ausgewählten übergeordneten Datensätzen filtern. Z.B.

Private Sub parentDataGridView_SelectionChanged(sender As Object, e As EventArgs) Handles parentDataGridView.SelectionChanged 
    Dim parentIDs As New List(Of Object) 

    For Each selectedRow As DataGridViewRow In parentDataGridView.SelectedRows 
     Dim rowView = DirectCast(selectedRow.DataBoundItem, DataRowView) 

     parentIDs.Add(rowView("ParentID")) 
    Next 

    childBindingSource.Filter = If(parentIDs.Any(), 
            String.Format("ParentID IN ({0})", 
               String.Join(", ", 
                  parentIDs)), 
            String.Empty) 
End Sub 
+0

Sie haben wahrscheinlich Recht. Vielen Dank für das Beispiel der Bearbeitung ausgewählter Zeilen in einer DataGridView. – AlexVB