Del*_*rin 6 c# asp.net jquery gridview download
在我的应用程序中,我正在为用户构建一个zip文件,以便下载一些导出的数据库信息.当用户单击"生成数据"按钮并在数据库中记录请求时,将创建zip文件.
在我的页面上,我有一个Gridview,它显示用户的下载历史记录,并使他们能够在一段时间内下载最新生成的文件.
我遇到的问题是,当他们点击按钮时,我想要刷新页面(从而刷新gridview并显示他们的最新请求),然后为他们启动文件下载(IE,提示提示并让他们决定是否打开/保存/取消它).
我能够在帖子上开始下载,但我的Gridview在开始之前没有更新,所以它没有显示列表中的最新请求.如何在下载提示开始之前更新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();
}
Run Code Online (Sandbox Code Playgroud)
如果隐藏字段设置为true(我在单击按钮构建文件时设置),则在Page_Load事件中调用该方法作为最后一项.
我也试过通过jQuery/AJAX调用来刷新页面并开始下载但收效甚微.我已经考虑打开一个模态对话框,让他们点击一个链接开始下载,然后在模态关闭时刷新页面,但如果我找不到另一个解决方案,这是最后的手段.
任何帮助是极大的赞赏!
问题是您不会将页面发送回用户。用户单击该按钮,该按钮将发送一个 HTTP 请求,您将生成一个包含要下载的文件的 HTTP 响应。如果你想刷新页面,然后才向他发送要下载的文件,你需要发送一个正常的回发结果(不调用该BeginDownload方法),然后以某种方式强迫他做另一个请求,对此你响应文件。
这里有多种选择:
\n\n所有方法都有其缺点(特别要小心 IE\xe2\x80\x99s \xe2\x80\x9cunwanted download\xe2\x80\x9d 保护,在某些情况下,这可能很烦人),您可能至少应该包括一个下载链接为 \xe2\x80\x9c 如果下载没有自动开始,请单击此处\xe2\x80\x9d。)
\n| 归档时间: |
|
| 查看次数: |
9186 次 |
| 最近记录: |