Du könntest natürlich jedesmal eine neue Query absetzen (je nach Datenvolumen und Performance).
Oder aber du holst dir einmalig alle Daten und bindest das DGV dann an ein DataView der DataTable:
C#-Quelltext
1:
| dgv.DataSource = dataTable.DefaultView; |
Und über diesen DataView kannst du dann den Filter setzen, z.B.
C#-Quelltext
1:
| dataTable.DefaultView.Filter = "gaststaette = " + id; |
Beim Filter kannst du dann auch alle gängigen SQL Operatoren (AND, OR, NOT) benutzen.
Und bei den ComboBoxen solltest du auch DataBinding (DataSource, DisplayMember, ValueMember) benutzen.
Dann kannst du über
C#-Quelltext
1:
| int id = (int)comboBox.SelectedValue; |
an die Id für deinen Filter kommen (solange ValueMember auf die Id-Spalte gesetzt wurde).
Evtl. noch einen Dummy-Leereintrag zu der DataBinding-Liste hinzufügen und diesen dann entsprechend behandeln (d.h. für die Filterung ignorieren).
P.S: Lies dich am besten mal in die
DataView-Klasse ein.
Edit: SelectedItem nach SelectedValue korrigiert, s.a.
www.c-sharp-forum.de....php?p=656211#656211