ButtonClick -> Seite wird erneut geladen

zovax

Erfahrenes Mitglied
Ich hatte das folgende Problem schon öfters, habe aber nie verstanden, womit ich es letztendlich denn gelöst hatte, oder warum es überhaupt auftrat.

Bei meinem akteullen Projekt sieht es folgendermaßen aus:
Ich habe verschiedene Textboxen, die beim Laden der Seite aus einer Datenbank gefüllt werden. Der User kann die Werte in den Textboxen dann beliebig ändern.
Sobald er es mit einem Button bestätigt werden die TextBoxen mit den verschiedenen Validator-Controls überprüft und die Werte erneut in eine Datenbank geschrieben. Hört sich simpel an, ist es auch.

Doch wenn das Button_Click Ereignis auftritt, werden nicht die neuen Werte in die Datenbank geschrieben, sondern die alten. Auch die aktuelle Seite wird danach einfach neu geladen und die Textboxen werden wieder mit den alten Werten gefüllt.

Folgendes habe ich schon versucht:
- Die Validator Controls zu überprüfen, bzw auszuschalten. Hat nichts geändert.
- Die TextBoxen auf AutoPostBack zu stellen. Doch wenn ich dann den Text ändere, wird die TextBox sofort wieder mit dem alten Wert gefüllt.
- Die Ereignisbehandlungsmethode des Buttons mehrmals neu geschrieben.

Es ist sicherlich kein Fehler im Quellcode, ich habe alles desöfteren überprüft und wiegesagt, ich hatte das Problem schon öfters. Meistens hat es sich dann durch unsinniges löschen bzw kopieren verschiedene Codeabschnitte und Controls gelöst. Allerdings weiss ich bis heute nicht warum :)

Ja, und ich habe auch schon die anderen Threads, die ein ähnliches Thema behandelten durchgelesen und die Suchfunktion benutzt, leider hat nichts geholfen :/
 
Hast du schon mal geguckt, was passiert, wenn du eienen stink-normalen HTML-Submit-Button nimmst?
Sollte ja eigentlich gar nichts passieren...
Oder hast du eventuell irgendwo nicht abgefangen, dass der DB-zugriff nur beim nicht-PostBack augeführt werden soll?
Wären so die ersten Ansatzpunkte...
 
Auch wenn ich einen normalen HTML Button nehme, wird bei einem Klick die Seite neu geladen.
Auch wenn ich den ASP Button mit gar keinem EventHandler versehe, wird bei einem Klick die Seite neu geladen.

Es hat auch nichts mit der Datenbank zutun,da, auch wenn ich den Teil mit der Datenbank rauslassen, bei einem Klick die Seite neu geladen wird und die alten Werte wiederhergestellt werden.
 
:confused: Wie können die "alten" Werte denn in den Feldern stehen, wenn du sie nicht mal beim ersten Aufruf aus der Datenbank ausliest?
Ich meinte, dass er bei jedem Erstellen der Seite - das tut er ja auch beim PostBack - die Daten aus der Datenbank ausliest und die Seite damit befüllt, weil da vielleicht die Abfrage auf isPostBack fehlt...
 
Original geschrieben von Gorcky
:confused: Wie können die "alten" Werte denn in den Feldern stehen, wenn du sie nicht mal beim ersten Aufruf aus der Datenbank ausliest?
Ich meinte, dass er bei jedem Erstellen der Seite - das tut er ja auch beim PostBack - die Daten aus der Datenbank ausliest und die Seite damit befüllt, weil da vielleicht die Abfrage auf isPostBack fehlt...

Nein nein, die Abfrage auf isPostback war schon da.
Es war anscheinend mal wieder irgendein Bug von VS.NET.
Habe die Seite neu erstellt, neue Controls und den Code von der alten Seite kopiert und es läuft einwandfrei :)

Das mit der Datenbank von dir hatte ich falsch verstanden, sorry.
 
:suspekt: Merkwürdige Sache...
Wenn du irgendwann mal herausfindest, worann es liegt, schreib's mal hier 'rein.
Das würde mich nämlich auch interessieren...
 
ich hatte grad das selbe Problem wie Zovax und es stellte sich dann doch nur als einfacher Postbackfehler raus. Ich hab ausversehen auch beim Postback die alten daten aus der datenbank geholt und deswegen wurden nie die änderungen gespeichert. Erst nach einfügen eines If Not Page.IsPostback() würden die Änderungen akzeptiert und alles lief wunderbar.

Danke für den Tip Gorcky.



Original geschrieben von Gorcky
:suspekt: Merkwürdige Sache...
Wenn du irgendwann mal herausfindest, worann es liegt, schreib's mal hier 'rein.
Das würde mich nämlich auch interessieren...
 
Zurück