J'ai un <asp:button />
qui génère un rapport PDF. Je veux utiliser jQuery BlockUI pour afficher un message qui dit: Génération de rapport ..Débloquer (jQuery BlockUI) après le fichier envoyé au navigateur via le flux de réponses
Utilisation: Response.BinaryWrite
J'envoie ensuite le fichier à l'utilisateur afin qu'il apparaisse comme un téléchargement de fichier dans le navigateur. Je ne peux pas obtenir le $.unblockUI();
pour tirer. Dès que le téléchargement du fichier commence ou est terminé ou est annulé, je veux qu'il disparaisse. Actuellement, ça ne marche jamais .. C'est comme si la page n'avait pas été rechargée, j'ai frappé le serveur mais il revient avec la même page.
choses que j'ai essayé:
- Définition d'une variable JS true ainsi de suite
document.ready()
il appellera une fonction si elle est définie sur true. Cela ne fonctionne pas car même si je change la variable dans le code, cela ne change pas le code HTML envoyé au client. - Ce genre de chose:
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function() { $.unblockUI; }); //register with Microsoft way $(document).ajaxStop($.unblockUI); //double the insurance and register with jquery way
ne sera jamais appelé ..
peut-il être réalisé avec un UpdatePanel?
Des pensées?
également dans le cas où il aide:
Response.AddHeader("Content-Disposition", "attachment;filename=""" & ShortFilename & """")
Response.AddHeader("Content-Length", byteArray.Length)
Response.BinaryWrite(byteArray)
Response.Flush()
Response.End()
Je peux voir pourquoi cela ne fonctionne pas en quelque sorte, la page n'est pas rafraîchissant dans toute façon il y a juste un flux de réponse étant envoyé au navigateur, mais sûrement il y a un événement sur lequel je peux m'accrocher?
Avez-vous trouvé une solution à ce problème? –
Il est effectivement impossible de le faire comme je l'ai prévu à l'origine en renvoyant un flux ne recharge pas la page ou vous permet de passer une logique personnalisée .. – Markive
La solution est de faire tout le traitement avec l'écran de chargement montrant, puis soit renvoyer une réponse qui supprimera BlockUI et ensuite demander le fichier que vous voulez diffuser, ou les rediriger vers une page qui re-demandera le flux .. Vous devez garder le fichier sur le disque dur temporairement pour le faire si .. – Markive