2016-06-11 14 views
0

Also habe ich eine gemischte Situation hier und ich dachte, ich wäre auf dem richtigen Weg, aber es scheint nicht zu funktionieren.Problem mit UpdatePanel in einer ASP.NET WebForms-Lösung

Also hier ist, was ich will .....

Ich habe eine Webseite, die eine Karte einen Punkt plotten verwendet. Ich möchte nicht in das eingreifen, was der Benutzer tut, aber ich möchte die Datenbank regelmäßig überprüfen, um festzustellen, ob die Punkte aktualisiert werden müssen. Keine Notwendigkeit = einfach den Timer starten. Have Update = Auto Löst das Click-Ereignis einer "Refresh" -Schaltfläche aus, auf die der Benutzer manuell klicken kann. Hier

ist der Weg Ich war \ versucht bin ....

So habe ich das UI arbeiten wie ich will. Ich habe ein Update-Panel, das einen Javascript-Countdown-Timer enthält. Wenn der Timer abgelaufen ist, löst er das "Click" -Ereignis einer versteckten Schaltfläche aus. Der Code-Behind überprüft die Datenbank.

Wenn es keine Aktualisierung in der Datenbank gibt, gibt es nichts zu tun, damit der Callback zum Update-Panel zurückkehrt und der Timer von vorne beginnt.

Hier ist, was nicht funktioniert ....

Wenn es ein Update, mein Code hinter ruft dann die nötige Routine, die alles auf der Seite nachvollzieht (z umbaut die Karte und so weiter). Das Problem ist, dass obwohl der Code tatsächlich ausgeführt wird, die Seite nicht neu geladen wird.

Ich nehme an, es liegt daran, dass der gesamte UpdatePanel-Workflow alle Seitenaktualisierungen ignoriert, die sich auf Objekte auswirken, die sich NICHT im Aktualisierungsbereich befinden.

Ich würde Code eingeben, aber es gibt wirklich keine. Grundsätzlich auf meinem Formular habe ich meine Seite mit ein paar Sachen. Auf dieser Seite befindet sich ein UpdatePanel, das ein JavaScript und eine Beschriftung enthält (um den Countdown des Timers für den Benutzer anzuzeigen).

Im Code_Behind für meine versteckte Taste (das durch die JavaScript genannt wird), ist es einfacher Code wie .....

if (PageNeedsToBeUpdated() == true) 
{ 
     BuildPage(); 
} 

Also, wenn die Aussage falsch ist ... alles funktioniert. Aber wenn es wahr ist, muss ich die gesamte Seite neu laden.

Danke .... und wenn ich das total falsch mache, bin ich total bereit, in eine andere Richtung zu gehen.

+0

Wie fügt man autopostback = true für den Backend-Code hinzu, der die Seite aktualisiert. – NepCoder

Antwort

0

Sie können das Timer-Steuerelement unter der Eigenschaft UpdatePanel Control and Set Interval des Timers auf ein bestimmtes Zeitintervall anwenden. Dann setzen Sie Ihre Logik in Timer_Tick Event. Jetzt wird Ihr UpdatePanel in einem bestimmten Zeitintervall aktualisiert.

+0

Sie sagen also, dass ich einen Timer in mein Update-Fenster lege, den ich aktiviere, wenn ich die ganze Seite zum Aktualisieren brauche? –

+0

Wenn Sie Ihre gesamte Seite aktualisieren möchten, können Sie dies auch in HTML tun. Zum Beispiel Wenn Sie Ihre Seite alle 10 Sekunden aktualisieren möchten, dann fügen Sie einen Tag im Abschnitt des HTML wie folgt hinzu: und wenn Sie implementieren möchten Diese Funktionalität von Code hinterher kann man dann so machen: Response.AppendHeader ("Refresh", "10"); –

+0

Ich gebe das eine Chance. Ich habe definitiv Zugriff auf die Antwort in meinem Code die Frage wird ist, wenn die Append-Header ignoriert wird, weil es nicht in der Update-Panel ist –

0

Ich weiß nicht, ob das möglich ist, aber vielleicht können Sie mir sagen. Wäre es möglich, dass mein Code dem JavaScript einen Wert zurückgibt, sodass das Skript weiß, ob der Timer neu gestartet oder ein vollständiger Post zurück ausgelöst werden soll?

0

Danke für die Vorschläge ... Ich habe es aussortiert. Ich habe für den Tag abgeschaltet, also keinen Code für den Post. Im Grunde habe ich am Ende ein einzelnes Skript verwendet, wenn das Update-Panel und ein Label mit einer versteckten Schaltfläche im Panel waren.

Das Klickereignis der Schaltfläche ändert den Text der Beschriftung und das JavaScript liest diesen Wert, um zu bestimmen, welche Aktion ausgeführt werden soll, einschließlich der Auslösung einer anderen Schaltfläche, die sich auch außerhalb des Aktualisierungsfensters befindet.