ASP.NET忙碌指示器
有没有办法用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来使其工作,如果需要,或其他任何事情。
我问了一个非常类似的问题在几个星期前: ASP.NET Custom Button Control - How to Override OnClientClick But Preserve Existing Behaviour?
我创建的类可以放到任何形式将防止双击。
本质上,我将按钮设置为“禁用”,但没有任何东西阻止您扩展以调用您自己的客户端代码。
你最好打赌是禁用按钮(像我一样),并且还显示一个隐藏的DIV,其中包含一个动画gif(AJAX加载图像)。
您可能会发现在这个问题上有帮助的讨论:
溶液(S)只处理按钮,但你可以在想法扩展到禁止更多的DOM,并呈现出隐蔽div作为客户端点击功能的一部分。
您应该可以使用一点jQuery来查找按钮并将其禁用。当我在过去完成此操作时,我还将该按钮的文本更改为“请稍候...”。我连接按钮的回发连接客户端onclick。
它对我很好,因为它停止了再次按下按钮,还给了用户即时的视觉反馈,他们已经成功地点击了按钮。
如果你需要一个例子,我相信我可以为你挖掘一些代码。
如果您希望在回发结果返回之前更新页面,则必须使用javascript,如下所示。这是一种通用的方法,您应该根据自己的需要进行定制。
在你的HTML:
<head>
<script type="text/javascript">
function ShowWait() {
document.getElementById('labelspan').innerText = 'Loading...';
}
</script>
</head>
在页面设置:
BtnEnvoyer.OnClientClick = "ShowWait();";
然后单击该按钮时,ShowWait
将适用于任何你想要的视觉效果,同时回传实际处理。一旦准备就绪,整个页面将被回发的结果替换。