C# Datagridview an Dataset binden

Agyss

Cadet 4th Year
Registriert
Dez. 2011
Beiträge
67
Hallo zusammen,

ich habe ein Dataset das 3 Tabellen enthält die in einer n:m Beziehung stehen, das sind:

Unternehmen
Branche
Unternehmen_Branche

Dies ist nötig, da viele (vorzugsweise kleine) Unternehmen die es betrifft z.B. Handwerker sind, aber auch Zimmer vermieten.

Nun stellt sich mir die Frage, wie ich den Unternehmensname, den Besitzer und die PLZ aus der Unternehmen Tabelle sowie die Branche(n) aus der Branchentabelle in einer Reihe vom Datagridview anzeigen lassen kann.

Google entweder falsch verwendet oder missverstanden.

Danke im Voraus für die Hilfe

Schönen Abend
Agyss
 
Mir würde da spontan LINQ einfallen:
Die Tabellen joinen und das Ergebnis als Source für das Datagridview verwenden.
 
Das Problem dabei ist, dass die Daten bearbeitet werden. Heißt: die updatefunktion wird erheblich erschwert und besonders die beziehungen werden verkompliziert.

Geht das nicht einfacher?
 
Wenn das was du da anzeigen willst "einfach so" in einem DataGrid abbildbar wäre bräuchte man auch in der Datenbank keine 3 Tabellen... von daher erst mal die Frage, was soll in der Tabelle alles editierbar sein und in welcher Form sollen die Branchen dargestellt werden?
 
Die Tabelle ist folgender Maßen aufgebaut:

[table="width: 500"]
[tr]
[td]Unternehmername[/td]
[td]Branche[/td]
[td]Mitglied (in einer Gemeinschaft)[/td]
[td]PLZ[/td]
[/tr]
[tr]
[td][/td]
[td]Vorname[/td]
[td]Nachname[/td]
[td]Sonstiges[/td]
[/tr]
[tr]
[td][/td]
[td]Unternehmenslogo[/td]
[td]Unternehmensbeschreibung[/td]
[td]Anzahl der Teilgenommenen Events[/td]
[/tr]
[/table]


Bis auf Mitglied ist alles eine Textcolumn - zumindest in der ersten Zeile.
Die beiden anderen Zeilen werden in einem RowDetailsTemplate dargestellt.
Editierbar ist alles in der ersten Zeile. Idealerweise die Branchen per Drop-Down.

Später soll auch nach versch. Branchen gefiltert werden, daher sind Doppeleinträge, bei denen nur die Branche anders ist, kein Problem.
 
Nachdem bei der Branche Mehrfachnennungen möglich sind und das ganze per Dropdown wählbar sein soll... demnach soll es dann mehrere Zeilen für das selbe Unternehmen bei verschiuedenen branchen geben? Oder soll es ein Multiselekt in der Dropdown werden?
 
Um die Übersicht zu wahren und vor allem bei der Filterung den einfacheren Weg zu gehen, denke ich, dass eine Mehrfachnennung sinnvoller ist - falls ich falsch liege bitte korrigieren.
 
Wobei ich fast denke dass das beim Abspeichern die kompliziertere Variante ist. Vor allem muss dann immmer ein voller Refresh aufs Grid weil man ja den Namen geändert haben könnte, was auch andere Zeilen betreffen kann. Lösbar müssten aber beide Varianten sein.

Das ganze geht sowieso nicht mit dem Standard-Mechanismen des Grids (falls doch, bitte her mit ner Lösung ;-). Ich hab das selber in nem Projekt so gelöst das ich das Grid gegen ne Tabelle gebunden habe die ich mit einem Select mit Join aus der DB gelesen hab und das Speichern einer Zeile selbst übernommen hab. (hatte meine eigene Klasse vom DataView abgeleitet und dort die Handler erweitert).

Eine einfachere Variante wüsste ich jetzt nicht, außer es lässt sich in der DB ein beschreibbarer View mit der entsprechenden Auflistung erstellen.
 
Ok, schade.
Um nicht immer auf die DB zugreifen zu müssen stellt sich die Frage ob es sich lohnt bzw. möglich ist die Daten aus dem Dataset auszulesen.

Mit Klassen bzw. deren Ableitungen habe ich nicht all zu viel Erfahrung - klingt jedoch Spannend. Denkst du es ist möglich, dass ich Einblick in dein Projekt nehmen könnte?
 
Hm, ist eher schlecht. War was internes für eine andere Firma. Ich hab aktuell nicht mal selbst zugriff auf den Code...

Allerdings ist für eine einzelne Tabelle eigentlich keine eigene Klasse erforderlich (hatte für mich den Vorteil das ich es automatisch für alle meine Tabellen hatte), dafür reicht es wenn man sich auf die Events vom Dataview bindet. Da müsste es sowas wie RowChanged und RowSaved oder so geben (die genauen Namen müsst ich erst in der MSDN nachschlagen). IN diesen Methoden müsste man dann händisch die Änderungen zurückspeichern. Das Befüllen des DataViews müsste eigentlich auch aus dem DataSet heraus gehen. Kann aber nichts genaues sagen, da ich da keine DataSets verwendet hatte. Ich hatte mir per passender Select-Statements direkt DataTables aus der Datenbank geholt die bereits die gewünschte Struktur hatten.
 
Das mit dem Projekt ist verständlich.

Es wäre ideal, wenn es mit dem Dataset klappt, denn dieses wird mit einem DataAdapter gefüllt, dadurch wäre ein einfaches Update mit einem CommandBuilder möglich.

Falls es dazu noch Ideen oder was gibt wäre ich sehr dankbar.

Dir allemal vielen Dank, hat mir sehr weitergeholfen.

Schönen Tag
Agyss
 
Zurück
Oben