即使在文件下载完成后,带有 PostbackTrigger 的 UpdatePanel 也会冻结
UpdatePanel with PostbackTrigger froze even after file download is complete
我试图在 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>
所以这个问题是,加载图像加载正确,文件下载正确,但即使在文件下载后它仍然显示加载图像。
任何帮助都会很棒。
这可能不是一个好的解决方案,但我正朝着这个方向努力。
看起来当文件下载时页面状态从未设置为 "complete" 它总是以 "interactive" 结尾所以这就是我修复它的方式。
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不会随时显示,在文件下载期间它会设置显示none这就是我想要的。
如果有人有更好的解决方案,请告诉我。
我试图在 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>
所以这个问题是,加载图像加载正确,文件下载正确,但即使在文件下载后它仍然显示加载图像。 任何帮助都会很棒。
这可能不是一个好的解决方案,但我正朝着这个方向努力。 看起来当文件下载时页面状态从未设置为 "complete" 它总是以 "interactive" 结尾所以这就是我修复它的方式。
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不会随时显示,在文件下载期间它会设置显示none这就是我想要的。
如果有人有更好的解决方案,请告诉我。