Announcement

Collapse
No announcement yet.

Datenübergabe zwischen zwei Windows-Forms

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenübergabe zwischen zwei Windows-Forms

    Hallo zusammen,

    stecke an folgendem Punkt fest, an dem ich nicht mehr weiter weiss...
    Ich habe eine Windowsform und darauf befindet sich ein an eine Datenbank gebundenes DataGrid. Die Datenverbindung habe ich im Visual Studio über den Designer realisiert.
    Das DatGrid enthält eine Liste von Kunden mit z.B. Name, Strasse usw.

    Ich möchte nun, dass ich durch Auswahl eines Kunden im Grid und Klick auf einen Button "Bearbeiten" eine weitere Form öffnet, die all die Daten des ausgewählten Kunden in Textfeldern darstellt. Nachdem ich die Daten in diesen Feldern editiert und auf "Speichern" geklickt habe, sollen die Daten gespeichert, das Fenster geschlossen natürlich auch das DataGrid aktualisert werden.

    Wie bekomme ich nun die Kundendaten des im ersten Fenster ausgewählten Kunden auf die zweite Form und danach auch noch in die Datenbank? Evtl. durch Übergabe des DataSets an die aufgerufene Form und dem Binden der Textfelder an dieses DataSet? Wenn ja, wie geht so etwas genau?

    Bin für jeden Tipp dankbar!
    Viele Grüße
    Robert

  • #2
    Hallo,
    das folgende Beispiel zeigt einen Weg, wie diese Anforderung umgesetzt werden kann. Das zweite Formular stellt eine öffentliche Methode zur Verfügung, über die die Position des virtuellen Datensatzzeigers übergeben werden kann. Dies ist notwendig, damit das 2. Formular den gleichen Datensatz aus der Datenmenge anzeigt wie das 1. Formular:
    <br>
    Aufruf im Hauptformular:
    <code>
    private void button3_Click(object sender, System.EventArgs e)
    {
    Form2 aFrm2 = new Form2();
    CurrencyManager aCM;
    aCM = (CurrencyManager)BindingContext[dataSet11, "Customers"];
    aFrm2.DoEditData(aCM);
    }
    </code>
    Implementierung im 2. Formular:
    <code>
    public void DoEditData(CurrencyManager aCM)
    {
    DataRowView aDRV = aCM.Current as DataRowView;
    DataView aDV = aDRV.DataView;
    this.BindingContext[aDV].Position = aCM.Position;
    textBox1.DataBindings.Add("Text", aDV, "CustomerID");
    textBox2.DataBindings.Add("Text", aDV, "CompanyName");
    if (this.ShowDialog() == DialogResult.OK)
    aCM.EndCurrentEdit();
    else
    aCM.CancelCurrentEdit();
    }
    </code&gt

    Comment

    Working...
    X