Разблокировать (jQuery BlockUI) после отправки файла в браузер через поток ответов - PullRequest
2 голосов
/ 21 июля 2010

У меня есть <asp:button />, который генерирует отчет в формате PDF.Я хочу использовать jQuery BlockUI для отображения сообщения: «Генерация отчета ..

Использование: Response.BinaryWrite Затем я отправляю файл пользователю, чтобы он отображался как загрузка файла в браузере.

Я не могу заставить $.unblockUI(); стрелять.Как только загрузка файла начнется или будет завершена или отменена, я хочу, чтобы он исчез.В настоящее время это никогда не происходит .. Как будто страница не была перезагружена, я попал на сервер, но он возвращается с той же страницей.

То, что я пробовал:

  • Установка переменной в JS на true, так что document.ready() будет вызывать функцию, если установлено значение true.Это не работает, потому что хотя я изменяю переменную в коде, она не меняет HTML-код, отправляемый клиенту.
  • Такого рода вещи: Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function() { $.unblockUI; }); //register with Microsoft way $(document).ajaxStop($.unblockUI); //double the insurance and register with jquery way никогда не вызывается ..

Можно ли этого достичь с помощью панели обновления?

Есть мысли?

Также, если это поможет:

Response.AddHeader("Content-Disposition", "attachment;filename=""" & ShortFilename & """")
        Response.AddHeader("Content-Length", byteArray.Length)
        Response.BinaryWrite(byteArray)
        Response.Flush()
        Response.End()

Я понимаю, почему это не так.это не работает, страница не обновляется, в любом случае есть только поток ответа, отправляемый в браузер, но наверняка есть событие, к которому я могу привязаться?

Ответы [ 2 ]

0 голосов
/ 24 мая 2013

Решение состоит в том, чтобы сначала заблокировать пользовательский интерфейс как обычно.Затем сделайте AJAX-запрос к генератору отчетов, когда PDF-файл будет сохранен локально в течение короткого времени, или поместите его во временную папку, которая очищается, когда пользователь выходит из системы или время его входа в систему истекает.Пусть генератор отчетов вернет сообщение об успешном завершении и URL-адрес.

Пусть клиентский запрос ajax обработает сообщение об успешном завершении, удалите BlockUI, а затем вызовите URL-адрес, используя:

window.location="http://yourURL/temp/report.pdf

. Запустится браузер.скачать файл и все готово!

https://stackoverflow.com/a/7660817/181197

0 голосов
/ 26 сентября 2011

Идея может состоять в том, чтобы создать дочернее окно, которое выполняет загрузку PDF, и позволить родителю выяснить, когда дочернее окно закрылось или что-то в этом роде.

Может ли родительское окно замечать, закрыто ли дочернее окно?

...