Nabend,
für die Erfassung von (Arbeits-)Zeiten soll ein GridView für die Eingabe der Daten sowie zur Anzeige verwendet werden. Auf Seite der Datenbank gibt es (vereinfacht) folgende Tabellen:
Kunden -> Projekte -> Zeiten (jeweils 1:n)
Die Anzeige via Grid soll folgendermaßen aussehen:
Datum | Kunde (Combo) | Projekt (Combo) | Beginn | Ende | etc...
...dabei sollen sowohl "Kunde" als auch "Projekt" ComboBoxes sein, wobei die Projekte-Combo natürlich abhängig ist von dem Wert in Kunde-Combo.
Habe das Ganze auch zum laufen bekommen, allerdings nur, wenn in der "Zeiten"-Tabelle jeweils zusätzlich zum Projekt noch der Kunde mitgespeichert wird, was ja nicht gerade schönes DB-Design ist:
Zunächst werden einfach die beiden Combo-Columns an jeweils einen "KundenDataTable" und einen "ProjekteDataTable" gebunden (Im Prinzip stehen hier in "Projekt" erst mal
alle Projekte, also nicht nur die des jeweiligen Kunden, was aber durch nachfolgenden Schritt nicht stört).
Dann (beim Ändern oder Erzeugen neuer Datensätze) wird beim Klicken in "Projekt" eine neue DataGridViewComboBoxCell erzeugt, diese an einen DataTable gebunden, der gefiltert ist nach dem Wert der in der Kunden-Combo dieser Zeile steht (KundenID),
und über GridView.Rows(e.RowIndex).Cells(e.ColumnIndex) = ComboGefiltert zugewiesen. Was ja, wie gesagt, funktioniert.
Nur, wie kann ich obiges lösen, ohne den Kunden (die KundenId) jeweils in der Zeiten-Tabelle mitzuspeichern? Dann müsste ja beim "Anzeigen" des Grids für jede Zeile "rückwärts" von der ProjekteId der ensprechende
Eintrag in einer nicht gebundenen(?) Kunden-Combo ausgewählt werden...?
Danke und Grüße, Jan