none
Master/Detail - Kopieren, Einfügen RRS feed

Antworten

  • Hallo Thorsten und Andreas,

    beim Einfügen mit ForeignKey muss normal zuerst in die Haupttabelle, auf dessen ID (PK) sich dann zum Beispiel die andere Tabelle bezieht, eingefügt werden (je nach referentieller Integrität). 
    Der Rest ergibt sich ggf. automatisch.  

    ... und für Master-Detail DGVs vielleicht etwas wie:

    [Master/Detail mit DataSet-Designer]
    http://dzaebel.net/MasterDetail.htm

    [Gewusst wie: Erstellen eines Master-/Detailformulars mit zwei DataGridView-Steuerelementen in Windows Forms]
    http://msdn.microsoft.com/de-de/library/c12c1kx4.aspx

     


    ciao Frank
    Samstag, 21. August 2010 19:45

Alle Antworten

  • Hallo Andreas,

    ja, der Primärschlüssel sollte ja eindeutig sein, daher ist beim Kopieren von Zeilen dort ein neuer zu erstellen (wenn er nicht automatisch erstellt wird).

    Ich würde Zeilen ganz einfach "stur" kopieren, indem ich durch die einzelnen Zellen der selektierten Zeile(n) iteriere und aus den Werten dann eine/mehrere DataRows erzeugen, die ich in der Klasse halte und beim Einfügen dann der zugrundeliegenden DataTable (evtl. im DataSet) hinzufüge.

    Ich habe mit den designer-gebildeten Objekten und DataGridViews allerdings keine große Erfahrung, meine Datenoperationen finden eher im Hintergrund statt und es werden mal ein paar Thumbnails von Bildern mit Infos angezeigt, aber nicht per DGV. Also sollten wir vielleicht besser auf jemanden warten, der hier mehr zu vermitteln hat.

    Viele Grüße,

      Thorsten

    Donnerstag, 19. August 2010 07:34
  • Ich habe mit den designer-gebildeten Objekten und DataGridViews allerdings keine große Erfahrung, meine Datenoperationen finden eher im Hintergrund statt und es werden mal ein paar Thumbnails von Bildern mit Infos angezeigt, aber nicht per DGV. Also sollten wir vielleicht besser auf jemanden warten, der hier mehr zu vermitteln hat.

    Hallo Thorsten,

    kein Problem, vielleicht meldet sich noch jemand. Danke trotzdem. Das Problem hast du ja verrstanden. Schönes Wochenende (wahrscheinlich ja das letzte 'richtige' Sommer WE) ;-) Andreas

    Samstag, 21. August 2010 11:48
  • Hallo Andreas,

    ich hätte da eh' mal die Frage, warum Du denn Datensätze kopieren und in die *gleiche* Tabelle wieder einfügen möchtest?

    Generell für DataGridViews gibt es bei Frank Dzaebel einige gute Beispiele so etwa:

    http://dzaebel.net/DgvItemSwitch.htm

    und generell http://dzaebel.net/Artikel.aspx

    Viele Grüße,

      Thorsten

    Samstag, 21. August 2010 15:59
  • Hallo Thorsten und Andreas,

    beim Einfügen mit ForeignKey muss normal zuerst in die Haupttabelle, auf dessen ID (PK) sich dann zum Beispiel die andere Tabelle bezieht, eingefügt werden (je nach referentieller Integrität). 
    Der Rest ergibt sich ggf. automatisch.  

    ... und für Master-Detail DGVs vielleicht etwas wie:

    [Master/Detail mit DataSet-Designer]
    http://dzaebel.net/MasterDetail.htm

    [Gewusst wie: Erstellen eines Master-/Detailformulars mit zwei DataGridView-Steuerelementen in Windows Forms]
    http://msdn.microsoft.com/de-de/library/c12c1kx4.aspx

     


    ciao Frank
    Samstag, 21. August 2010 19:45
  •  

    ... und für Master-Detail DGVs vielleicht etwas wie:

    [Master/Detail mit DataSet-Designer]
    http://dzaebel.net/MasterDetail.htm

     


    Hallo Frank,

      ja es ist gut. Das Contextmenü fehlt aber auch noch, oder?

    Grüße Andreas

    • Bearbeitet Andreas Bauer2 Sonntag, 22. August 2010 11:55 Rechtschreibung
    Sonntag, 22. August 2010 11:54
  • Hallo Andreas,

            > ContextMenu fejlt noch ...

    Dazu kannst Du einfach ein ContextMenuStrip in die Form ziehen, deren gewünschte Inhalte einfügen und dann an die ContextMenuStrip-Eigenschaft des DataGridView binden.
    Will man je nach Zelle ein anderes ContextMenu anzeigen, kann man die Einträge im Opening-Ereignis (zum Beispiel) noch ändern (die Zelle bekommt man mit HitTest heraus). Ansonsten ggf. noch mal nachfragen. Oder auch direkt die ContextMenuStrip-Eigenschaft einer speziellen DataGridViewColumn / DataGridViewRow setzen. Was beim Klick auf ein Kontextmenü gemacht werden soll, kann man durch Doppelklick auf das Element bestimmen, indem man einen Handler implementiert. Vielleicht auch folgendes interessant:
    [Ein ContextMenuStrip für diverse DataGridViews]


    ciao Frank
    Sonntag, 22. August 2010 13:12
  • Dazu kannst Du einfach ein ContextMenuStrip in die Form ziehen, deren gewünschte Inhalte einfügen und dann an die ContextMenuStrip-Eigenschaft des DataGridView binden.
    Will man je nach Zelle ein anderes ContextMenu anzeigen, kann man die Einträge im Opening-Ereignis (zum Beispiel) noch ändern (die Zelle bekommt man mit HitTest heraus). Ansonsten ggf. noch mal nachfragen. Oder auch direkt die ContextMenuStrip-Eigenschaft einer speziellen DataGridViewColumn / DataGridViewRow setzen. Was beim Klick auf ein Kontextmenü gemacht werden soll, kann man durch Doppelklick auf das Element bestimmen, indem man einen Handler implementiert. Vielleicht auch folgendes interessant:
    [Ein ContextMenuStrip für diverse DataGridViews]

    Hallo Frank,

    wer übernimmt die Logik beim Kopieren?

    Sprich wer geniert den Primärschlüssel, Fremdschlüssel? Geht das automatisch oder muss ich erst den Fremdschlüssel merken? Deise Info fehlt mir doch noch.

    a) Master - kein Problem

    b) Detail - Primär der Detail + Fremd der Mastertabelle

    Grüße Andreas

    Montag, 23. August 2010 06:23