2010-09-08 94 views
0

有没有办法用ASP.net页面(带AJAX)来显示一些繁忙的指示器(只是一个标签很好),同时禁用某些按钮(以防止双击),然后做工作。在工作结束时,标签改变以指示新的状态。ASP.NET忙碌指示器

当我试图做这种方式:

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来使其工作,如果需要,或其他任何事情。

回答

1

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

我创建的类可以放到任何形式将防止双击。

本质上,我将按钮设置为“禁用”,但没有任何东西阻止您扩展以调用您自己的客户端代码。

你最好打赌是禁用按钮(像我一样),并且还显示一个隐藏的DIV,其中包含一个动画gif(AJAX加载图像)。

1

您可能会发现在这个问题上有帮助的讨论:

ASP.Net double-click problem

溶液(S)只处理按钮,但你可以在想法扩展到禁止更多的DOM,并呈现出隐蔽div作为客户端点击功能的一部分。

1

您应该可以使用一点jQuery来查找按钮并将其禁用。当我在过去完成此操作时,我还将该按钮的文本更改为“请稍候...”。我连接按钮的回发连接客户端onclick。

它对我很好,因为它停止了再次按下按钮,还给了用户即时的视觉反馈,他们已经成功地点击了按钮。

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

0

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

在你的HTML:

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

在页面设置:

BtnEnvoyer.OnClientClick = "ShowWait();"; 

然后单击该按钮时,ShowWait将适用于任何你想要的视觉效果,同时回传实际处理。一旦准备就绪,整个页面将被回发的结果替换。