Javascript 在代码隐藏执行期间(c#和asp net)显示加载动画(div元素)

Javascript 在代码隐藏执行期间(c#和asp net)显示加载动画(div元素),javascript,c#,asp.net,Javascript,C#,Asp.net,我正在代码中使用以下加载动画。我希望它在我创建的Excel SQL导入期间可见。Excel导入是使用c#和隐藏的代码完成的。以下按钮正在触发导入脚本: <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Always"> <ContentTemplate>

我正在代码中使用以下加载动画。我希望它在我创建的Excel SQL导入期间可见。Excel导入是使用c#和隐藏的代码完成的。以下按钮正在触发导入脚本:

<asp:ScriptManager ID="ScriptManager1" runat="server" />
   <asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Always">
      <ContentTemplate>
         <asp:Button ID="savebutton" ClientIDMode="Static" class="button" runat="server" Text="Submit" Visible="True" OnClick="Savebutton_Click" />
      </ContentTemplate>
   </asp:UpdatePanel> 

这是我的加载动画:

<!-- Loading Element -->
<div runat="server" visible="false" id ="loading" class="loader"></div>

我的问题是,每次开始导入时,我都会使用
“load.Visible=true;”
元素在导入/代码执行完成之前不可见

我需要从一开始就展示出来。我希望在加载过程完成后将其隐藏。我尝试了多种方式通过javascript和C#显示动画,但到目前为止没有任何效果

我希望你能帮助我

多谢各位

问候


Shazy

作为第一次放置
visible=“false”
将导致完全不呈现控件。因此,您在客户端上没有可用的div,因此无法显示它

作为第二个选项,您可以为此使用控件

但要回答你的问题。您必须处理“单击客户端”按钮。因此,与其直接触发服务器端事件,不如先显示您的div

在触发按钮之前,添加
OnClientClick=“showDiv()”
以处理客户端

<asp:Button ID="savebutton" class="button" runat="server" Text="Submit" OnClientClick="showDiv()" OnClick="Savebutton_Click" />

//the js to remove imHidden from className
function showDiv() {
  document.getElementById('<%=loading.ClientID%>').className = "loader";
}

还可以在updatepanel中设置load div,这样它会将自身更新回原始隐藏状态

我尝试了您提到的方法,但无法将执行绑定到按钮,因为有几个if语句可能会阻止上载,因此加载动画在这一点上没有意义。但当我尝试这样做时:ScriptManager.RegisterStartupScript(this.Page,this.GetType(),“value”,“show_loader();”,true);整个脚本运行后,加载动画仍将开始。似乎C#不允许javscript函数在完成之前运行。@Shazy我看不出有什么问题。加载动画将变得更短,您将向用户反馈正在发生的事情。希望您能根据自己的需要调整给定的示例needs@Shazy
RegisterStartUpScript
完全按照名称执行。您正在断开连接工作。这意味着脚本从服务器到达客户端时会被触发。它返回客户机的唯一时刻是在服务器上执行所有代码之后。导致你现在的行为。
<div id ="loading" runat="server" class="loader imHidden"></div>
.imHidden {
  display: none;
}