0
我对页面中的许多UpdatePanel有一个Ajax UpdateProgress。其中一个updatepanel的gridview有一个下载按钮。一旦用户点击按钮,“等待”图像就会显示出来,但即使在下载完成后也会一直显示。如何隐藏UpdateProgress图片
一旦下载完成,我应该如何隐藏它。
ASPX:
<asp:UpdateProgress Id="UpdateProgress1" runat="server" DisplayAter="1">
<ProgressTemplate>
<asp:Image id="imgWait" runat="server" ImageUrl="~/Images/wait.gif"/>
</ProgressTemplate>
</asp:UpdateProgress>
JS:
function HideImage()
{
$(#imgWait).hide();
}
//Also tried
//Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
//function EndRequestHandler(sender, args)
//{
// document.getElementById('<%=imgWait.ClientID%>').className = 'hidden';
//}
代码背后:
protected void Download(object sender, CommandEventArgs e)
{
string sFile = e.CommandArgument.ToString();
Response.Redirect("Download.Aspx?file="+sFile,false);
ScriptManager.RegisterStartupScript(this.Page,this.GetType(),
"script","HideImage();",true);
}
Download.Aspx
page_load()
{
if(!string.IsNullOrEmpty(Request.QueryString["file"]))
{
string path = Server.MapPath(Request.QueryString["file"]);
System.IO.FileInfo file = new System.IO.FileInfo(path);
if (file.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" +
file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();
}
}
}
编译器根本没有进入下载页面。所以,我把相同的代码放在'download()'中。它说,Native框架位于调用栈之上。如果这是错误的,你可以告诉,如何在同一页面上下载? – Ruby
'string script'行出现错误,我更新了答案,试试看。 –
工作,但出现了一个新问题。 gridview有2列查看,删除,并且都有图标的所有行。当我点击任意行的视图图标后,它会下载文件,但是,在文件下载完成后,网格中的所有图标都会消失。尽管如此,我仍然可以下载单击该空白区域的文件。 – Ruby