C# 响应后未隐藏进度条。结束

C# 响应后未隐藏进度条。结束,c#,asp.net,asp.net-ajax,C#,Asp.net,Asp.net Ajax,我有在我的项目中下载excel文件的功能。 单击“导出”按钮时,将显示进度条。但即使出现浏览器的“另存为拨号”,进度条也不会不可见。 响应后出现问题。未使用结束进度条。 进度条在asp.net ajax开始请求时可见,在结束请求时不可见。代码如下所示 可见和隐藏进度条: Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); Sys.WebForms.PageRequ

我有在我的项目中下载excel文件的功能。 单击“导出”按钮时,将显示进度条。但即使出现浏览器的“另存为拨号”,进度条也不会不可见。 响应后出现问题。未使用结束进度条。 进度条在asp.net ajax开始请求时可见,在结束请求时不可见。代码如下所示

可见和隐藏进度条:

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        function BeginRequestHandler(sender, args) {
            //             alert('B');
            var elem = args.get_postBackElement();
            ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...');
        }
        function EndRequestHandler(sender, args) {
            ActivateAlertDiv('hidden', 'AlertDiv', '');
        }
        function ActivateAlertDiv(visstring, elem, msg) {
            var adiv = $get(elem);
            adiv.style.visibility = visstring;
            //                    adiv.innerHTML = msg;
        }
并在导出时下载文件,单击:

Response.Clear();
                    Response.ClearHeaders();
                    Response.ClearContent();
                    Response.AddHeader("content-disposition", "attachment; filename=" + OUTPUTFILE + ".xls");
                    Response.AddHeader("Content-Type", "application/Excel");
                    Response.ContentType = "application/ms-excel.xls";
                    Response.AddHeader("Content-Length", file_New.Length.ToString());
                    Response.WriteFile(file_New.FullName);
                    Response.Flush();
                    file_New.Delete();

因为当文件发送到客户端时,响应将结束。 您需要在新页面中执行此操作

在页面中,将代码替换为:

Session["OUTPUTFILE"] = OUTPUTFILE;
ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", "var Mleft = (screen.width/2)-(760/2);var Mtop = (screen.height/2)-(700/2);window.open( 'file.aspx', null, 'height=700,width=760,status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no,top=\'+Mtop+\', left=\'+Mleft+\'' );", true);
名为file.aspx的新页面:

protected void Page_Load(object sender, EventArgs e)
{
     Response.Clear();
     Response.ClearHeaders();
     Response.ClearContent();
     Response.AddHeader("content-disposition", "attachment; filename=" + Session["OUTPUTFILE"].ToString()+ ".xls");
     Response.AddHeader("Content-Type", "application/Excel");
     Response.ContentType = "application/ms-excel.xls";
     Response.AddHeader("Content-Length", file_New.Length.ToString());
     Response.WriteFile(file_New.FullName);
     Response.Flush();
     file_New.Delete();
}

因为当文件发送到客户端时,响应将结束。 您需要在新页面中执行此操作

在页面中,将代码替换为:

Session["OUTPUTFILE"] = OUTPUTFILE;
ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", "var Mleft = (screen.width/2)-(760/2);var Mtop = (screen.height/2)-(700/2);window.open( 'file.aspx', null, 'height=700,width=760,status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no,top=\'+Mtop+\', left=\'+Mleft+\'' );", true);
名为file.aspx的新页面:

protected void Page_Load(object sender, EventArgs e)
{
     Response.Clear();
     Response.ClearHeaders();
     Response.ClearContent();
     Response.AddHeader("content-disposition", "attachment; filename=" + Session["OUTPUTFILE"].ToString()+ ".xls");
     Response.AddHeader("Content-Type", "application/Excel");
     Response.ContentType = "application/ms-excel.xls";
     Response.AddHeader("Content-Length", file_New.Length.ToString());
     Response.WriteFile(file_New.FullName);
     Response.Flush();
     file_New.Delete();
}

完成后,我想弹出窗口,因为它是不必要的。我怎么能做到这一点…谢谢你给了我一个很好的解决方案。完成后,我也想弹出窗口,因为这是不必要的。我是如何做到的…谢谢你给了我一个很好的解决方案。