Discussion:
Änderungen in DataGrid werden nicht gespeichert
(zu alt für eine Antwort)
Vadim Klimov
2008-09-05 07:24:01 UTC
Permalink
Hi all,

ich bin neu bei C# und habe ein Problem mit DataGrid. Irgendwie verstehe ich
den Kram nicht. Also, ich habe ein WPF-Form mit DataGrid, der Daten aus
Northwind-Datenbank holt. Bis dahin ist alles schön und wunderbar, ich habe
meine Daten, kann die Daten editieren, neue Zeile hizufügen usw. Beim
Speichern aber funktioniert es nicht mehr. Für Speichern benutze ich
folgende Anweisungen:
dataGrid1.CommitEdit();
cta.Update(_nds);
hier cta ist mein TableAdapter, _nds - NorthwindDataSet.
Auf ersten Blick scheint alles geklappt zu haben. Wenn ich das Programm
sofort wieder aufrufe, sind die Änderungen noch in DataGrid, in Datenbank
selbst allerdings nicht. Was mich noch stützig macht, in Server-Explorer wird
die Datenverbindung zu Northwind-Datenbank mit rotem Kreuz markiert. Was
bedeutet das? Ist die Datenbank zur Laufzeit gesperrt? Ich kann Daten in
Datenbank manuell ändern, das geht in Entwicklungmodus ganz gut.
Woran liegt das und was muss ich machen?
Danke im voraus
Frank Dzaebel
2008-09-05 17:48:48 UTC
Permalink
Hallo Vadim,
Post by Vadim Klimov
ich bin neu bei C# und habe ein Problem mit DataGrid. Irgendwie
verstehe ich den Kram nicht. Also, ich habe ein WPF-Form mit
DataGrid, der Daten aus Northwind-Datenbank holt.
Es gibt mehrere DataGrid's di Du meinen könntest, aber
ich vermute stark, Du meinst das von Microsoft aus
dem WpfToolkit.

[Windows Presentation Foundation (WPF) - Release: WPF Toolkit - Preview]
http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14963

Beachte, dass das eine Community Tech *Preview* (CTP) ist,
also noch durchaus Fehler enthalten kann.
Post by Vadim Klimov
Bis dahin ist alles schön und wunderbar, ich habe meine Daten,
kann die Daten editieren, neue Zeile hizufügen usw.
Beim Speichern aber funktioniert es nicht mehr.
Hier ein Beispiel fürs Speichern:

[CodeProject: Introduction to the WPF DataGrid]
http://www.codeproject.com/KB/WPF/WPFDataGrid.aspx

Dann den Code in etwa so abändern:

NorthwindDataContext dc;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
dc = new NorthwindDataContext();
NorthwindDataGrid.ItemsSource = dc.Customers.ToList();
}

private void MenuSichern(object sender, RoutedEventArgs e)
{
dc.SubmitChanges();
} // Menu-Steuerelement und einen MenuItem zufügen und
// dann den Ereignishandler MenuSichern verbinden.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Vadim Klimov
2008-09-08 07:05:02 UTC
Permalink
Hallo Frank,

Danke für Deine Antwort. In der Tat benutze ich DataGrid aus WPFToolkit.
Mittlerweise habe ich das Problem gelöst. Das lag daran, dass Connection von
DataSet/DataAdapter geschlossen war und musste die explicit öffnen mit
cta.Connection.Open(); wo cta mein TableAdapter ist.

Dazu noch eine Frage. Wird die Connection nicht automatisch geöffnet, wenn
man ein DataSet erstellt und mit Daten füllt mittels
cta.Fill(_nds.Customers); ?

Gruß Vadim
Post by Frank Dzaebel
Hallo Vadim,
Post by Vadim Klimov
ich bin neu bei C# und habe ein Problem mit DataGrid. Irgendwie
verstehe ich den Kram nicht. Also, ich habe ein WPF-Form mit
DataGrid, der Daten aus Northwind-Datenbank holt.
Es gibt mehrere DataGrid's di Du meinen könntest, aber
ich vermute stark, Du meinst das von Microsoft aus
dem WpfToolkit.
[Windows Presentation Foundation (WPF) - Release: WPF Toolkit - Preview]
http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14963
Beachte, dass das eine Community Tech *Preview* (CTP) ist,
also noch durchaus Fehler enthalten kann.
Post by Vadim Klimov
Bis dahin ist alles schön und wunderbar, ich habe meine Daten,
kann die Daten editieren, neue Zeile hizufügen usw.
Beim Speichern aber funktioniert es nicht mehr.
[CodeProject: Introduction to the WPF DataGrid]
http://www.codeproject.com/KB/WPF/WPFDataGrid.aspx
NorthwindDataContext dc;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
dc = new NorthwindDataContext();
NorthwindDataGrid.ItemsSource = dc.Customers.ToList();
}
private void MenuSichern(object sender, RoutedEventArgs e)
{
dc.SubmitChanges();
} // Menu-Steuerelement und einen MenuItem zufügen und
// dann den Ereignishandler MenuSichern verbinden.
ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Loading...