运行 在 asp.net 应用 javascript 响应前的代码 window 下载
Run in asp.net app javascript code before response window download
我开发了一个页面,当用户单击一个按钮时,在查询之后可以下载一个 xlsx。
查询可能需要几秒钟,所以我想在操作期间隐藏按钮。
我知道这通常是一个简单的操作,通过按钮上的js:
<asp:ImageButton id="Bt" OnClientClick=" this.style.display = 'none'; />
脚本结束时服务器端:
Bt.Style.Add("display", "inline");
但是为了制作 xslx,我使用了这段代码:
response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
response.AddHeader("Content-Disposition", "attachment; filename=name.xlsx");
response.TransmitFile(file_path);
response.Flush();
response.End();
清除响应上下文不允许我在脚本中 运行 其他 javascript 代码(它根本不起作用),所以我不知道如何设置内联按钮。
ADyson在评论中的建议是正确的。没有舒适的解决方案来解决这个问题。
顺便说一句,我做了一个技巧来解决这个问题,它有点蹩脚,但它很简单而且有效。如果它对某人有用,我 post 无论如何。
try
{
...
}
catch
{
...
}
finally
{
script = "document.getElementById('Bt').style.display = 'inline';";
if(add_click)
script += "document.getElementById('Bt_Download_Hidden').click();";
Page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), "alert", @"
<script type=""text/javascript"">
" + script + @"
</script>");
}
在按钮中,在我完成所有工作之前,我只是准备了 xlsx 并将结果路径存储在会话变量中。
正如您在 finally 子句 i 运行 中看到的那样,一个脚本总是将按钮的可见性设置回内联,最后,如果一切正常,它会单击一个隐藏的按钮。在第二个按钮中,我输入了下载文件的代码。
所以我强制冲洗操作是最后一个。
我开发了一个页面,当用户单击一个按钮时,在查询之后可以下载一个 xlsx。 查询可能需要几秒钟,所以我想在操作期间隐藏按钮。
我知道这通常是一个简单的操作,通过按钮上的js:
<asp:ImageButton id="Bt" OnClientClick=" this.style.display = 'none'; />
脚本结束时服务器端:
Bt.Style.Add("display", "inline");
但是为了制作 xslx,我使用了这段代码:
response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
response.AddHeader("Content-Disposition", "attachment; filename=name.xlsx");
response.TransmitFile(file_path);
response.Flush();
response.End();
清除响应上下文不允许我在脚本中 运行 其他 javascript 代码(它根本不起作用),所以我不知道如何设置内联按钮。
ADyson在评论中的建议是正确的。没有舒适的解决方案来解决这个问题。 顺便说一句,我做了一个技巧来解决这个问题,它有点蹩脚,但它很简单而且有效。如果它对某人有用,我 post 无论如何。
try
{
...
}
catch
{
...
}
finally
{
script = "document.getElementById('Bt').style.display = 'inline';";
if(add_click)
script += "document.getElementById('Bt_Download_Hidden').click();";
Page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), "alert", @"
<script type=""text/javascript"">
" + script + @"
</script>");
}
在按钮中,在我完成所有工作之前,我只是准备了 xlsx 并将结果路径存储在会话变量中。 正如您在 finally 子句 i 运行 中看到的那样,一个脚本总是将按钮的可见性设置回内联,最后,如果一切正常,它会单击一个隐藏的按钮。在第二个按钮中,我输入了下载文件的代码。 所以我强制冲洗操作是最后一个。