Du brauchst nur 2 BindingSource Objekte für dein DataSet.
Jede BindingSource erhält eine DataView der Tabelle (DefaultView) die das DataGridView anzeigen soll und wird als DataSource dem DataGridView zugewiesen.
Dann brauchst du eine Eigenschaft für die ID der Vatertabelle (die brauchst ja sicher öfter)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private int currentID { get { if (dgvTabelle1.SelectedCells.Count > 0) return (int)dgvTabelle1.CurrentRow.Cells["id"].Value else return 0; } } |
Dann einfach beim SelectionChangeEvent des ersten DataGridView die BindingSource des 2. ändern.
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void dgvTabelle1_SelectionChanged(object sender, EventArgs e) { DataView dw = (DataView)bsTabelle2.DataSource; dw.RowFilter = "foreignkey = " + currentID.ToString(); } |
Ich habs nicht selbst getestet, da ich das in meinem Projekt mit LINQ gemacht habe, aber so sollte es wohl gehen.