У меня есть веб-приложение, которое использует ajax с asp.net и C#. Теперь я пытаюсь экспортировать средство просмотра отчетов из CodeBehind (имя страницы original.aspx) в виде файла PDF при нажатии на кнопку ASP. Все работает отлично, за исключением случаев, когда я помещал кнопку в UpdatePanel. Поэтому после поиска в Интернете я обнаружил, что Response.BinaryWrite, Response.Flush и т. Д. Не работают с UpdanePanel, если только я не укажу кнопку как PostBackTrigger, которая затем пренебрегает с целью использования UpdatePanel, потому что на странице есть много элементов управления и так много шагов происходит до достижения этапа экспорта.
Итак, я передал код для экспорта в PDF на событие «Загрузить страницу» на другой странице (скажем, Default.aspx) и подумал использовать Response.Redirect, чтобы открыть новую вкладку для страницы экспорта.
Что действительно случилось, так это то, что PDF-файл загружается автоматически (пока он находится на исходной странице (original.aspx)) и без перенаправления. Что хорошо, но UpdateProgress был активирован и никогда не прекращал показывать изображение gif. Просто продолжайте цикл. При удалении UpdateProgress из кода все работает как ожидалось. Файл экспортируется и загружается, когда кнопка находится внутри UpdatePanel (async not PostBackTrigger) и использует Response.Redirect из CodeBehind.
Есть ли какое-либо решение для отключения, убивающее процесс UpdateProgress из кода позади только с определенным кликом или любым другим решением для этой проблемы?Response.Redirect внутри панели обновления при использовании обновления прогресса C# .NET
1
A
ответ
1
Вы можете установить идентификатор элемент управления внутри PostBackTrigger обратной передачи полной страницы вместо частичного обновления страниц, которая вызывает загрузки файла проблему.
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
...
<Triggers>
<asp:PostBackTrigger ControlID="DownloadButton" />
</Triggers>
</asp:UpdatePanel>