Yerf!
ich sitz hier mal wieder vor dem C#-WindowsForms Projekt und frag mich, wie ich am besten mit ForeignKeys im DataViewGrid umgehe...
Ausgangslage: ich habe Tabellen mit Daten bei denen manche Spalten IDs sind die sich auf andere Tabellen beziehen (normale 1:n Beziehungen). Das DataViewGrid fülle ich direkt aus der Tabelle (momentan mittels select * from tabelle, wird noch auf die expliziten Spalten geändert) und so sehe ich in diesen Spalten nur eine Zahl (die ID) anstelle eines "schönen" Strings.
In der Bearbeitungsmaske hole ich mir noch eine Zuordnungsliste um eine Dropdown-Box mit allen Möglichkeiten zu befüllen, so dass der User dort aussagekräftige Namen hat, im Hintergrund wird aber die ID in die dem DVG zugundeliegnde tabelle eingefügt.
Ziel: ich hätte jetzt gern im DVG ebenfalls die schönen Bezeichner anstelle der IDs, aber ohne das es mir meine vorhandene Logik zum Laden und Speichern der Datensätze zerhaut...
Momentane Lösung: ich greif ins Rendering des DVG ein und ändere den FormatString der Zelle auf auf den Namen aus der Zuordnungsliste... kommt mir aber wie ein übler Hack vor und das Sortieren im DVG funktioniert damit auch nicht richtig (weil weiterhin auf Basis der IDs sortiert wird)
Ideen:
- Ich hol mir aus der Datenbank die Namen anstelle der IDs und Joine beim Speichern über alle beteiligten Tabellen um wieder die IDs einfügen zu können (Performance, Aufwand?)
- Ich hol mir Namen und IDs aus der Datenbank und blende die ID-Spalten aus. Beim ändern eines Datensatzes muss ich beide Spalten synchron halten da ich Namen anzeige und ID speichere (gangbarer Weg oder auch Murks?)
- Ich bekomm es irgendwie hin dem DVG die Beziehungen zu erklären... (geht das irgendwie?)
- weils mir grad beim tippen noch so einfällt: kann man in C# ENUMS dynamisch erstellen und wäre das ein möglicher Weg?
Oder gibt es einen anderen Weg? Hat damit schon mal jemand hantiert und einen Lösungsweg parat?
Gruß,
Harlequin
RIP --- XHTML 2
nur die Besten sterben jung