我在以下场景中需要帮助: 单击aspx页面中的SAVE按钮,将进行一些处理。处理时间可以是10-15分钟。我想禁用SAVE按钮直到进程结束,一旦进程完成,应该启用SAVE按钮。 我尝试了以下但无法解决问题: 1)客户端脚本: 我在客户端clik上调用了一个java脚本,并将disable属性设置为true。但是,由于禁用了客户端的按钮,因此未调用服务器端saveButton_Click事件。 2)在服务器端的saveButton_Click方法中禁用 在这种情况下,由于saveButton_Click的调用已经发生并且请求被发送到服务器,因此客户端在处理请求之前没有任何区别。
请尽快帮助我。非常紧急。
由于 鲁帕
答案 0 :(得分:0)
您说:“1)客户端脚本:我在客户端clik上调用了一个java脚本,并将disable属性设置为true。但是,由于禁用了客户端的按钮,因此未调用服务器端saveButton_Click事件。 “这意味着现在禁用该按钮,并且不会处理对服务器端的调用,直到您重新启用该按钮。那么它不符合你的要求吗?
答案 1 :(得分:0)
点击按钮时使用System.Threading.Thread.Sleep(5000)
并将其禁用...
答案 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"