Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
GridView MainForm und EditForm
PreAlpha
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

GridView MainForm und EditForm

beantworten | zitieren | melden

Hallo,

Es geht um folgendes: Ich habe eine MainForm mit einem GridView welche Daten aus einer dahinter stehenden Firebird Datenbank anzeigt (per DataSet). Nun möchte ich bei Doppelklick (bzw. Klick auf einen Button) auf eine Reihe ein neues Form zum ändern des Datensatzes öffnen (ich nenne es mal EditForm).

Nun stehe ich vor folgendem Problem: Ich muss der EditForm sagen um welchen Datensatz es sich handelt. Nun hätte ich gedacht, übergebe ich der EditForm einfach den PrimaryKey (also die ID) des gedoppelklickten Eintrages. Damit habe ich aber leider immer noch keinen Zugriff auf den kompletten Datensatz in der EditForm.

Das komplette DataSet aus dem MainForm der EditForm zu übergeben wäre wohl ein bisschen Overkill.

Gibt es da evtl. eine elegantere Lösung ? Sollte ja eigentlich nicht all zu schwer zu realisieren sein, ist es doch ein häufig anzutreffender Designansatz.

Im GridView auf der MainForm werden im übrigen nur einige Spalten der dahinter hängenden Tabelle in der Datenbank angezeigt (aus Gründen der Übersichtlichkeit). Im EditForm möchte ich allerdings auf alle Spalten des jeweiligen Records zugreifen.

LG
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Also ich würde das ganze DS übergeben (ist ja nur eine Referenz).

Und wenn Du im Main und EditForm mit Databinding arbeitest, dann müsstest Du nur noch imn EditForm denselben BindingContext setzten wie im MainForm... und schon würde im EditForm auf Current-Record des MainForm gebunden

DataSource=DS
DataMember=Name der Tabelle

Gruss
Programmierhans
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
PreAlpha
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

beantworten | zitieren | melden

Tut mir Leid das ich jetzt das Thema nochmal rauswühlen musste.

Ich habe mein DataSet der anderen Form im Konstruktor übergeben. Das funktioniert auch wunderbar um Daten auszulesen. Wenn ich nun aber Daten in das DataSetB aus Form2 schreiben möchte, schreibt er sie zwar in das DataSetB, macht aber keine Anstalten das ganze nach einem TableAdapter.Update() in die Datenbank zu schreiben.

Nun müsste ich mein (editiertes) DataSetB aus Form2 wieder in Form1 an DataSetA übergeben und über dieses die dahinterliegende Datenbank aktualisieren. Das wird aber ziemlich unübersichtlich und wirkt zudem ziemlich unelegant (von Fehleranfälligkeit und Datensynchronität ganz zu schweigen).

Da muss es doch noch eine andere Möglichkeit geben ? Ich brauche in meiner Anwendung prinzipiell nur ein einziges DataSet aus welchem ich (und der Designer) von mehreren Forms aus zugreifen kann (meine Grids sind per Designer an das DataSet gebunden).

LG
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von PreAlpha am .
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.173

beantworten | zitieren | melden

Hallo PreAlpha,

du mußt auch denselben TableAdapter verwenden (also nicht in der 2. Form einen neuen erstellen)!

Noch besser wäre es, du würdest dein Programm so aufbauen, daß es eine eigene DataLayer-Schicht benutzt (so daß diese dann die DataSets und TableAdapter etc. verwaltet).
private Nachricht | Beiträge des Benutzers
PreAlpha
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

beantworten | zitieren | melden

Wenn ich aber DataAdapter und DataSet an meine neue Form übergebe (oder eben an eine Klasse die meine Datenbankzugriffe verwaltet), wie kann ich das DataSet dann im Designer an mein Grid binden um noch vollen Designer Zugriff auf meine Grid Layout Optionen zu haben (wie z.B. Anordnung der Spalten) ?

Muss ich hierzu im Designer ein neues DataSetC erstellen, dem DataSetC den wert von DataSetB zuordnen (welches den Wert von DataSetA zugeordnet bekommen hat) um dann letztendlich DataSetB wieder den Wert von DataSetC zuzuordnen ? Das wäre dann meine bereits vermutete, wenig elegante, Methode. Das muss doch besser lösbar sein ?

LG
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von PreAlpha am .
private Nachricht | Beiträge des Benutzers