2009-03-18 21 views
0

Ich habe ein Formular (Compact Framework, tatsächlich) mit ein paar Felder, ein Datum und eine Zeichenfolge, unter anderem. Beide TextBox-Steuerelemente sind an Eigenschaften in einer BindindSource gebunden.Formulare Datenbindung - DataSet wird nicht aktualisiert?

Die BindindSource verfügt über ein DataSet als DataSource-Eigenschaft und das DataMember ist eine Tabelle in einer SQL CE-Datenbank.

Wenn ich eine neue Zeile hinzufügen möchte, rufe ich bindingSource.AddNew(), dann bindingSource.MoveLast(). Das Formular zeigt die Standardwerte (wie im DataSet definiert) und ich kann alle Felder bearbeiten.

Um das Formular zu speichern, rufe ich bindingSource.EndEdit() auf und füge die Werte aus der DataSet-Zeile mithilfe einer TableAdapter-Methode in die Datenbank ein. Das Datum bringt es in die Datenbank, die Zeichenfolge nicht. Stattdessen wird der Standardwert für die Zeichenfolge gespeichert, nicht der Wert, den ich in das Textfeld eingegeben habe.

Wenn ich die Daten in der Zeile der DataSet-Tabelle nach dem Aufruf von EndEdit() überprüfen, wird das Datumsfeld mit den Daten aus dem Formular aktualisiert, die Zeichenfolge ist nicht.

Seltsamerweise, wenn ich eine bestehende Zeile mit der gleichen Form (ohne Aufruf von AddNew) bearbeiten, wird das String-Feld aktualisiert und behielt nur gut. Dies geschieht nur nach dem Aufruf von AddNew() auf der BindingSource. Was vermisse ich? Wo soll ich anfangen zu suchen?

Der Code ist ein bisschen zu viel, um hier leider zu posten.

Antwort

0

Ich fand das Problem - ich hatte versehentlich die gleiche Spalte in der BindingSource für die Tag-Eigenschaft und die Text-Eigenschaft der TextBox ausgewählt. Ich denke, was passiert ist, war, dass der Text zuerst zurückgeschrieben wurde, der Tag zweit, und weil der Tag nicht aktualisiert wurde, überschrieb er den modifizierten Wert.

Verwandte Themen