ASP.NET – JavaScript für Serverseitige Events nutzen mittels doPostBack
Hallo zusammen,
ich hatte kürzlich das Problem, über JavaScript einen serverseitigen Event anzusprechen. Genauer gesagt handelte es sich um
ein JavaScript SetTimout, das nach Ablauf der Zeit Daten in die Datenbank schreiben sollte. Hier mein Lösungsansatz dafür,
sicher nicht der einzig Mögliche, aber ein wie ich finde recht simpler und leicht verständlicher.
Wir beginnen mit einer Testapplikation, die nicht viel mehr als einen Scriptmanager, einen Button, ein Label und Updatepanel hat.
In letzterem befindet sich wiederum ein Label, in dem die aktuelle Serverzeit angezeigt werden soll – fortlaufend.

Der Code-Behind für den Button sieht dann so aus:
protected void Button1_Click(object sender, EventArgs e)
{
Label2.Text = "Aktuelle Zeit:" + System.DateTime.Now;
}
in der ASPX-Seite wird nun der Button als Trigger für das Update-Panel definiert, selbiges wird auf UpdateMode Coditional gesetzt, und ein kleines SetInterval Javascript geschrieben. Man beachte in dem Script den Aufruf der Framework-Funktion __doPostBack, die den Button als EventTarget enthält.

Auf das Bild klicken zum Vergrößern
Und schon funktioniert das ganze wie es soll. Nun kann man den Button noch per Style auf Display:none setzen, dann stört er auch nicht mehr. Visible=false sollte man bleiben lassen, da sonst auch das DoPostBack den Button nicht mehr findet. Anstelle eines SetInterval kann man nun jeden beliebigen Code setzen, zum Beispiel ein SetTimeout um den Aufruf nur ein einziges mal nach Ablauf einer bestimmten Zeit durchzuführen.
Ich hoffe es hilft euch, und bin gespannt auf Anmerkungen.
Hier ist der Sourcecode der Beispielwebseite zu finden
Euer Sascha Baumann



21. August 2008 at 12:29
Hallo Sascha,
das sollte IMHO auch ohne Trigger gehen, wenn sich der Button innerhalb des UpdatePanels befindet. Dann spart man sich den Trigger.
21. August 2008 at 23:02
Hallo Jürgen,
Stimmt, wenn der Button innerhalb des Updatepanels ist muss man Ihn nicht extra als Trigger definieren. Wäre zu überlegen, ob es dann eventuell zu Problemen durch die Ladezeit des Panels kommen kann, wenn der Server sehr langsam ist … Hab ich aber gerade auch keine Antwort drauf
Vielleicht mach ich ja nochmal ein HowTo zum Umgang mit Updatepanels.
Ciao
Sascha