我在excel文件下载期间尝试使用图像加载器。这是我目前的代码。
在Javascript中
function ShowProgress() {
document.getElementById('<% Response.Write(prgLoadingStatus.ClientID); %>').style.display = "inline";
}
在aspx页面
<asp:UpdatePanel ID="upAlignBuyer" runat="server" UpdateMode="Conditional" EnableViewState="true" >
<ContentTemplate>
<asp:Button ID="Button2" Text="Download BWS" CssClass="app_button"
Font-Bold="true" value="DownloadExcel" OnClick="Download_Click" OnClientClick="ShowProgress();"
runat="server" Height="23px" Width="120px"></asp:Button>
<asp:UpdateProgress ID="prgLoadingStatus" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="upAlignBuyer" >
<ProgressTemplate>
<div id="overlay">
<div id="modalprogress">
<div id="theprogress">
<asp:Image ID="imgWaitIcon" runat="server" ImageAlign="AbsMiddle" ImageUrl="~/App_Themes/Images/progress.gif" />
Please wait...
</div>
</div>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="Button2" />
</Triggers>
</asp:UpdatePanel>
因此,问题是,正确加载图像并正确下载文件,但即使文件下载后它仍会显示加载图像。 任何帮助都会很棒。
答案 0 :(得分:0)
这可能不是一个好的解决方案,但我正朝着这个方向前进。 看起来当文件下载时,页面状态永远不会设置为“完成”,它总是以“交互”结束,所以这就是我修复它的方式。
document.onreadystatechange = function () {
if (document.readyState === "interactive") {
HidePrograss();
}
}
function ShowProgress() {
document.getElementById('<% Response.Write(prgLoadingStatus.ClientID);
%>').style.display = "inline";
}
function HidePrograss() {
document.getElementById('<% Response.Write(prgLoadingStatus.ClientID);
%>').style.display = "none";
}
这样,updateprogress将不会随时显示,在文件下载期间,它将设置display none,这就是我想要的。
如果有人有更好的解决方案,请告诉我。