2009-07-21 3 views
9

Wie erhalte ich ein WPF DataGrid, um Änderungen in der Datenbank zu speichern?Wie bekomme ich ein WPF DataGrid zum Speichern von Änderungen zurück in die Datenbank?

Ich habe mein DataGrid-Steuerelement an ein DataTable-Objekt gebunden und diese Tabelle mit einer sehr einfachen SELECT-Abfrage gefüllt, die einige grundlegende Informationen abruft. Die Daten erscheinen in der Steuerung gut.

Aber wenn ich das Steuerelement verwenden, um die Daten zu bearbeiten, werden die Änderungen nicht an die DB zurückgeschoben.

Weiß jemand, was ich vermisse?

Antwort

16

Updates durchführen

Wenn der Benutzer bearbeitet die Kunden, Daten innerhalb des Datagrid, die gebunden in-memory Datentabelle wird entsprechend aktualisiert. Diese Aktualisierungen werden jedoch nicht automatisch in die Datenbank zurückgeschrieben. Es liegt am Entwickler zu entscheiden, wann Änderungen an der DataTable abhängig von den Anforderungen der Anwendung in die Datenbank zurückgeschrieben werden. In einigen Fällen möchten Sie möglicherweise einen Stapel von Änderungen über eine Schaltfläche "Übermitteln" absenden, oder Sie möchten möglicherweise, dass die Datenbank aktualisiert wird, wenn der Benutzer die Bearbeitung jeder Zeile festlegt. Um diese zu unterstützen, verfügen die Zeilen, die die DataTable enthält, über eine RowState-Eigenschaft, die angibt, ob sie Änderungen enthält, die mit der Datenbank synchronisiert werden sollen. Der Synchronisationsprozess wird einfach über die Update-Methode des TableAdapter durchgeführt. url: WPF DataGrid examples

Das folgende Beispiel zeigt, wie die RowChanged und RowDeleted Ereignisse gehandhabt werden können, so dass Änderungen in dem Datatable Zustand in die Datenbank jedes Mal geschrieben werden, der Benutzer eine Zeile ändert:

public CustomerDataProvider() 
{ 
    NorthwindDataSet dataset = new NorthwindDataSet(); 

    adapter = new CustomersTableAdapter(); 
    adapter.Fill(dataset.Customers); 

    dataset.Customers.CustomersRowChanged += 
     new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified); 
    dataset.Customers.CustomersRowDeleted += 
     new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified); 
} 

void CustomersRowModified(object sender, NorthwindDataSet.CustomersRowChangeEvent e) 
{ 
    adapter.Update(dataset.Customers); 
} 
+0

Dies ist sehr hilfreich. Vielen Dank! – Giffyguy

Verwandte Themen