ASP.NET忙指标

时间:2010-09-08 19:56:00

标签: asp.net ajax

ASP.net页面(使用AJAX)是否有办法显示一些忙碌指示符(只是一个标签很好),同时禁用某些按钮(以防止双击)然后完成工作。在工作结束时,标签会更改以指示新状态。

当我尝试这样做时:

Public Sub BtnEnvoyer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnEnvoyer.Click
    BtnEnvoyer.Enabled = False
    LblStatus.Visible = True
    LblStatus.ForeColor = Drawing.Color.ForestGreen
    LblStatus.Text = "Envoi en cours..."

    SendEmail()

End Sub

Private Sub EnvoyerCourriel()
    ' Do some work 

    LblStatus.Text = "Done!"
    BtnEnvoyer.Enabled = True
End Sub

Public Sub BtnEnvoyer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnEnvoyer.Click BtnEnvoyer.Enabled = False LblStatus.Visible = True LblStatus.ForeColor = Drawing.Color.ForestGreen LblStatus.Text = "Envoi en cours..." SendEmail() End Sub Private Sub EnvoyerCourriel() ' Do some work LblStatus.Text = "Done!" BtnEnvoyer.Enabled = True End Sub

我只看到dn结果,两者之间没什么。 我不介意使用javascript使其在需要时工作,或其他任何事情。

4 个答案:

答案 0 :(得分:1)

您可能会发现对此问题的讨论很有帮助:

ASP.Net double-click problem

解决方案仅处理按钮,但您可以将想法扩展为禁用更多DOM,并将您的消息显示为隐藏div作为客户端点击功能的一部分。

答案 1 :(得分:1)

您应该可以使用一些jQuery来查找按钮,并禁用它们。当我在过去完成此操作时,我也将按钮文本更改为“Please Wait ...”。我连接了客户端onclick和回按钮。

它对我来说很有用,因为它停止了再次按下按钮,并且还为用户提供了他们成功点击按钮的即时视觉反馈。

如果你需要一个例子,我确信我可以为你挖出一些代码。

答案 2 :(得分:1)

几周前我问了一个非常相似的问题: ASP.NET Custom Button Control - How to Override OnClientClick But Preserve Existing Behaviour?

我创建的课程可以放到任何表格上,防止双击。

基本上,我将按钮设置为“禁用”,但没有什么可以阻止您扩展它以调用您自己的客户端代码。

你最好的选择是禁用按钮(就像我一样),还会显示一个包含动画gif(AJAX加载图像)的隐藏DIV。

答案 3 :(得分:0)

如果您希望在回发结果返回之前更新页面,则必须使用javascript,如下所示。这是一种通用方法,您可能应该根据需要进行自定义。

在你的HTML中:

<head>
  <script type="text/javascript">
    function ShowWait() {
      document.getElementById('labelspan').innerText = 'Loading...';
    }
  </script>
</head>

在页面设置中:

BtnEnvoyer.OnClientClick = "ShowWait();";

然后,当单击该按钮时,ShowWait将在回发实际处理时应用您想要的任何视觉效果。一旦准备好,整个页面将被替换为回发的结果。