在响应窗口下载之前运行asp.net app javascript代码

时间:2016-08-23 12:25:37

标签: javascript asp.net response httpresponse

我开发了一个页面,当用户点击按钮时,在查询后可以下载xlsx。 查询可能需要几秒钟,因此我想在操作期间隐藏按钮。

我知道这通常是一个简单的操作,通过按钮上的js:

animaor.Play("runningright");
脚本结束时

和服务器端:

<asp:ImageButton id="Bt" OnClientClick=" this.style.display = 'none';  />

但是为了使xslx我使用这段代码:

Bt.Style.Add("display", "inline");

明确响应上下文不允许我在脚本中运行其他javascript代码(它只是不起作用),所以我不知道如何将按钮的可见性设置为内联。

1 个答案:

答案 0 :(得分:0)

ADyson在评论中提出的建议是正确的。没有舒适的解决方案来解决这个问题。 顺便说一句,我做了一个解决这个问题的技巧,它有点蹩脚,但它很容易,而且很有效。如果它对我发布的任何人都有用。

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子句中看到的那样,我运行一个脚本,该脚本始终将按钮的可见性设置为内联,最后,如果一切正常,则单击隐藏按钮。在第二个按钮中,我将代码下载到文件中。 所以我强迫冲洗操作成为最后一次。