单击相同按钮时禁用asp按钮,直到过程结束

时间:2010-03-25 07:15:55

标签: c# asp.net events button

我在以下场景中需要帮助:            单击aspx页面中的SAVE按钮,将进行一些处理。处理时间可以是10-15分钟。我想禁用SAVE按钮直到进程结束,一旦进程完成,应该启用SAVE按钮。 我尝试了以下但无法解决问题: 1)客户端脚本:              我在客户端clik上调用了一个java脚本,并将disable属性设置为true。但是,由于禁用了客户端的按钮,因此未调用服务器端saveButton_Click事件。 2)在服务器端的saveButton_Click方法中禁用              在这种情况下,由于saveButton_Click的调用已经发生并且请求被发送到服务器,因此客户端在处理请求之前没有任何区别。

请尽快帮助我。非常紧急。

由于 鲁帕

6 个答案:

答案 0 :(得分:0)

您说:“1)客户端脚本:我在客户端clik上调用了一个java脚本,并将disable属性设置为true。但是,由于禁用了客户端的按钮,因此未调用服务器端saveButton_Click事件。 “这意味着现在禁用该按钮,并且不会处理对服务器端的调用,直到您重新启用该按钮。那么它不符合你的要求吗?

答案 1 :(得分:0)

点击按钮时使用System.Threading.Thread.Sleep(5000)并将其禁用...

对于参考Disable submit button

答案 2 :(得分:0)

您可以使用虚拟提交按钮:

<%@ Page Language="C#" AutoEventWireup="true" %>
<script type="text/C#" runat="server">
    protected void BtnClick(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(2000);
        result.Text = DateTime.Now.ToLongTimeString();
    }
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <button type="button" onclick="this.disabled='disabled';document.getElementById('<%= btn.ClientID %>').click();">Start processing</button>
    <asp:Button ID="btn" runat="server" OnClick="BtnClick" style="display:none;" />
    <asp:Label ID="result" runat="server" />
    </form>
</body>
</html>

答案 3 :(得分:0)

不要禁用该按钮。正如你所说,它不会触发服务器端事件。或者,您可以隐藏按钮并显示一些正确的消息(如'处理..','工作..')。这将提供良好的界面。你会得到disabling button on postback and enabling the button after postback的效果。

答案 4 :(得分:0)

您可以通过此代码处理它。假设,这是一个名为btnAdd的按钮。当您单击此按钮时,由于执行相应的代码,它将被禁用。我的意思是由于回发它将被禁用。

if (!IsPostBack)
    {
     btnAdd.Attributes.Add("onclick", "this.disabled=true;" + GetPostBackEventReference(btnAdd).ToString());
    }

答案 5 :(得分:0)

在按钮标记中设置OnClientClick和UseSubmitBehavior

 OnClientClick="this.disabled = true; this.value = 'Submitting...';" UseSubmitBehavior="false"