2009-06-22 11 views
2

Ich habe eine ASP.NET-Seite, die eine asp.net-Schaltfläche Steuerelement enthält. Wenn der Benutzer auf die Schaltfläche klickt, führt die Seite einige Berechnungen durch und schließt sich dann selbst. Wenn ich jedoch während des Postbacks auf die Schaltfläche klicke, wird auf der Seite ein leerer Bildschirm angezeigt. Ich möchte stattdessen eine Lade-Nachricht anzeigen. Ich benutzte Javascript, um ein div zu zeigen, das anfänglich versteckt wurde und gezeigt wurde, wenn der Benutzer die Taste klickt, aber wenn der Post zurück geschieht, wird der Bildschirm leer. Irgendeine Idee, wie man die ladende Mitteilung in diesem Szenario zeigt?ASP.NET, Zeige Loading message while Postback

Vielen Dank im Voraus.

Antwort

2

Haben Sie wirklich ASP.NET AJAX oder JQuery vermeiden müssen?

Wenn ja: Verschieben Sie die schwere Verarbeitung in ein unsichtbares IFRAME. Führen Sie Ihr Formular für das unsichtbare IFRAME aus, oder verwenden Sie Javascript, um den Speicherort des IFRAME festzulegen.

Ihr 'Lade' Javascript wird gut angezeigt. Wenn das Formular innerhalb des IFRAME fertig ist, muss nur etwas Javascript ausgegeben werden, um dem Elternteil mitzuteilen, dass er zum Ort oder zur Aktualisierung gehen soll.

+0

Ich habe jQuery in meinem Projekt.Wie kann ich jQuery dafür verwenden? – Shyju

+2

sammeln Sie alle Daten, die Sie verarbeiten müssen, und POST (http://docs.jquery.com/Ajax/jQuery.post) es zu einer ASPX-Seite, die die Verarbeitung durchführt. Die jQuery.post hat einen Rückruf, um Sie zu informieren, wenn die Seite fertig ist. Das Ajax-Objekt hat Ereignisse ajaxStart/ajaxComplete. Sie können diese verwenden, um Ihre Lade-Nachricht ein-/auszuschalten. – russau

1

Grundsätzlich können Sie nicht nur Postbacks verwenden. Der Browser zeichnet den Bildschirm weiß, während er auf eine Antwort vom Server wartet. Diese Nachricht, die Sie festlegen, wenn der Benutzer auf eine Schaltfläche klickt, war der richtige Ansatz (also gute Arbeit).

Aber der Browser zeichnete den Bildschirm weiß und dachte "Oh Junge, ich bin dabei, eine Antwort zu bekommen!" und wartete dann länger als du für angemessen hältst.

Das einzige, was Sie versuchen könnten, wäre in der Antwort, die allererste Sache zu streamen, eine Art von Lade-Nachricht, die der Browser anzeigen kann, während der Rest geladen wird (wie der Gmail-Ladebildschirm). Aber persönlich denke ich, du könntest deine Zeit damit verbringen, eine andere Entwicklung zu machen.

Sie könnten jedoch andere Techniken mit AJAX versuchen.

2

Wenn Sie Ajax asynchron zum Zurücksetzen auf das Formular verwenden, können Sie das UpdateProgress-Steuerelement verwenden. Hier ist ein Link zu einem Artikel erklären, wie die Funktionalität zu implementieren:

How to make a Gmail-like loading indicator with ASP.NET Ajax

+0

Ich verwende nicht ASP.NET AJAX – Shyju

+0

Gibt es einen Grund, warum Sie Ajax nicht verwenden möchten? Es ist ziemlich einfach zu implementieren, besonders da Sie bereits asp.net verwenden. – DaveK