使用进度条下载文件时遇到问题。
这就是我在aspx页面中的内容。
<asp:UpdatePanel ID="up1" runat="server">
<ContentTemplate>
<asp:TabContainer ID="Tabcontainer1" runat="server" CssClass="fancy fancy-green" align="left" ActiveTabIndex="0">
<asp:TabPanel ID="CRRecomd_Customers" runat="server">
<ContentTemplate>
<asp:Button ID="btn_CPLREcomoned_Customers" runat="server" ValidationGroup="V3" CssClass="button" Text="Generate CRs To Be Recommended" Width="297px" OnClick="GetcuctomersCrs" Height="43px" />
</ContentTemplate>
</asp:TabPanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<div id="Background"></div>
<div id="Progress">
<img src="Images/loading.gif" style="vertical-align: middle" />
Fetching Records Please Wait...
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
在后面的代码中,我编写了以下代码来下载文件
if(chk_download.Checked) {
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
Response.Flush();
Response.BinaryWrite(CRDataStream);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
这里的问题是当我点击btn_CPLREcomoned_Customers按钮进度条正确显示但文件未下载时。如果我删除了显示进度条的部分,则文件已成功下载。
当我点击下载按钮时,我没有收到错误,只是它会显示进度条一段时间(约1分钟),之后会显示相同的屏幕而没有任何错误或信息......
有谁可以告诉我这个问题的正确解决方案?
感谢。
答案 0 :(得分:0)
我正在搜索的问题是让进度条消失,但我的代码允许下载。
我会为OutputStream添加以下项目,以便在允许文件下载的CompleteRequest之前正确完成。
HttpContext.Current.Response.OutputStream.Flush()
HttpContext.Current.Response.OutputStream.Close()
HttpContext.Current.ApplicationInstance.CompleteRequest()
这允许在我的浏览器中下载文件,但不会使进度面板消失。希望这会有所帮助。