Autor Beitrag
Alex1989
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 11.08.10 22:33 
Hi

Gibt es eine möglichkeit über 2 Datagridviews die 2 tabellen eines datasets die eine verbindung über datarelation haben eine 1 zu N verbindung zu ermöglichen?
Mal so als beispiel was ich mir dabei so denke:
wenn ich ein datensatz aus Tabelle1 in Datagridview1 selectiere oder irgendwie mit einem steuerelement anwähle das mir zur dessen "ID" die passenden datensätze aus Tabelle2 in Datagridview2 angezeigt werden?


Danke schonmal im vorraus
TThrebank
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 06.09.10 12:00 
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)
ausblenden 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.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
private void dgvTabelle1_SelectionChanged(object sender, EventArgs e)
{
   DataView dw = (DataView)bsTabelle2.DataSource;
   // ich nenn das ganze mal foreignkey da ich nicht weiß wie das Feld in der Datenbank heißt.
   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.