В моем приложении я создаю zip-файл, который пользователь может загрузить для некоторой экспортированной информации из базы данных. ZIP-файл создается, когда пользователь нажимает кнопку «сгенерировать данные», и я регистрирую запрос в базе данных.
На моей странице, У меня есть Gridview, который показывает историю загрузок пользователя, а также предлагает им возможность загружать последний сгенерированный файл в течение заданного периода времени.
Проблема, с которой я сталкиваюсь, заключается в том, что когда они нажимают кнопку, я хочу, чтобы страница обновлялась (таким образом, обновлялась сетка и отображался их последний запрос), а затем начиналась загрузка файла для них (IE, вывести приглашение и пусть решают, открывать / сохранять / отменять).
Я могу начать загрузку в ответ на сообщение, но мой Gridview не обновляется до начала, поэтому он не отображает самый новый запрос в списке. Как я могу заставить сетку обновляться ДО начала загрузки?
Я использую следующее, чтобы начать загрузку:
public void BeginDownload()
{
FileDownload download = InventoryService.GetLastThreeFileDownloads(this.EmployeeId).First();
FileInfo fi = new FileInfo(Server.MapPath(SERVER_DOWNLOAD_PATH) + download.DownloadFileName);
Response.Clear();
Response.ContentType = "application/zip";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fi.Name);
Response.TransmitFile(fi.FullName);
Response.Flush();
}
Метод вызывается в событии Page_Load как последний элемент, если для скрытого поля установлено значение true (которое я устанавливаю, когда они нажимают кнопку для создания файла).
Я также пробовал делать это с помощью вызовов jQuery / AJAX, чтобы обновить страницу и начать загрузку без особого успеха . Я подумал об открытии модального диалогового окна и разрешении им щелкнуть ссылку, чтобы начать загрузку, а затем обновить страницу, когда модальное окно закроется, но это последнее средство, если я не могу найти другое решение.
Любая помощь приветствуется !