2012-04-12 12 views
1

Ich habe eine ASP.NET-Seite, die einige Kriterien vom Benutzer mit ASP.NET-Steuerelemente sammelt und dann basierend auf den Werten der Steuerelemente verwendet HttpContext.Current.Response, um die Ausgabe zu generieren eine CSV von der Webseite.ASP.NET Update-Fortschritt bei der Verwendung von HttpContext

Das Problem, das ich habe, ist, dass es eine Minute dauern kann oder so für meine Antwort generiert werden. Daher möchte ich einen Fortschrittsbalken implementieren, der vom Zeitpunkt der Übermittlung des Antrags durch den Benutzer bis zum Versand der CSV-Datei reicht. Leider kann ich mein verstecktes div nicht anzeigen und bei Bedarf anzeigen lassen, wenn EnablePartialRendering im ScriptManager auf false gesetzt ist (dies ist zum Füllen anderer Steuerelemente auf der Seite erforderlich).

Gibt es eine Möglichkeit, einen Fortschrittsbalken (Server oder Client-Seite) zu implementieren, um den Status der HttpContext-Ausgabe zu überwachen?

Antwort

0

Die Klasse UpdateProgress ist kein Fortschrittsbalken. Es ist Zweck es Rückmeldung zu geben, dass ein teilweiser Postback passiert, nicht, um den tatsächlichen Fortschritt dieses partiellen Postbacks zu kommunizieren

Mein liebling JavaScriptish (unterstützt alle wichtigen Plugins auch) Bibliothek zu tun, was Sie fragen, ist Plupload :

Beispiele können here gesehen werden.

0

Nein. Zumindest nicht die Art, wie Sie denken. Wenn Sie eine Datei an den Benutzer zurücksenden, können Sie dem Benutzer zuvor keinen HTML-Code zuweisen. Sie müssen die Datei als eigenständige Antwort senden.

Was Sie tun können, ist, was viele andere Seiten tun, nämlich den Prozess im Hintergrund auszuführen und den Benutzer auf eine Seite umzuleiten, die eine Animation hat, um anzuzeigen, dass etwas passiert. Sie verwenden Javascript, um die Seite alle paar Sekunden zu aktualisieren, bis der Hintergrundprozess abgeschlossen ist, und geben Sie dann die Datei zurück.

Dies kompliziert den Prozess und erfordert viel mehr Arbeit. Die Frage, die Sie stellen müssen, ist, ist dieser Fortschritt es wirklich wert?

EDIT:

Haben Sie nicht bemerkt, wurden unter Verwendung von Ajax, in dem Fall, dass Sie einfach eine Animation auf der Seite haben kann, die normalerweise verborgen ist, dann, wenn Sie den Prozess durchführen blenden Sie die Animation und lassen Sie es Spin . Dies kann keinen tatsächlichen Fortschritt anzeigen, aber es zeigt, dass etwas passiert. Wenn der Vorgang abgeschlossen ist, blenden Sie die Animation erneut aus und senden Sie die Datei.

Wenn Sie JavaScript verwenden, um den Download zu tun, haben Sie einige andere Optionen ... aber nichts davon bezieht sich auf den Fortschritt der Vorbereitung zum Download.

+0

Aber wenn die Animation Client-basierte, wie weiß ich, wann mein serverbasierte zu tun Httpcontext reagiert getan wird, so kann ich entfernen die Animation? – kittyhawk

+0

@kittyhawk - Wenn du Ajax machst, dann musst du den Download durch eine Ajax-Methode starten. Wenn diese Methode zurückkehrt, können Sie einen Rückruf ausführen, um die Animation auszublenden. –

0

Wenn Sie Ajax verwenden dies ist der beste Weg

$('#loadinganimation') 
    .hide() // hide it initially 
    .ajaxStart(function() { 
     $(this).show(); 
    }) 
    .ajaxStop(function() { 
     $(this).hide(); 
}); 
+0

@ MystereMan-Sorry-ich habe das nicht gesehen. Ich habe aktualisiert. – coder

Verwandte Themen