在执行代码(c#和asp net)

时间:2018-06-08 09:12:26

标签: javascript c# asp.net

我在我的代码中使用以下加载动画。我希望它在我创建的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>

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

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

我希望你能帮帮我..

非常感谢

亲切的问候

Shazy

1 个答案:

答案 0 :(得分:1)

首先放置visible="false"将导致完全无法渲染控件。因此,您没有在客户端提供div,因此您无法显示它。

作为第二个,您可以使用UpdateProgress控件。

但要回答你的问题。您必须处理按钮单击客户端。因此,不要直接触发服务器端事件,而是先显示你的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";
}

添加一个类来隐藏div而不是使用可见,因此div将呈现给客户端但不会显示

<div id ="loading" runat="server" class="loader imHidden"></div>

CSS

.imHidden {
  display: none;
}

还要在updatepanel中设置你的加载div,以便它自己更新回原来隐藏的