В моем приложении я создаю 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, чтобы либо обновить страницу, и начать загрузку с небольшим успехом. Я думал о том, чтобы открыть модальное диалоговое окно и позволить им щелкнуть ссылку, чтобы начать загрузку, а затем обновить страницу, когда модальное окно закрывается, но это последнее средство, если я не могу найти другое решение.
Любая помощь очень ценится!