服务器端button点击后能否先enabled=false,然后再执行其click方法里边的代码 就像以前我们开发asp程序的时候,如果某个操作执行比较慢,就把这个按钮设定为enabled=false,然后防止用户再点击,重复操作,怎么实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不可以,没有效果...但是可以用javascript来实现达到你的效果 服务器端button点击后能否先enabled=false,然后再执行其click方法里边的代码 ?可以,你试试就知道了:protected System.Web.UI.WebControls.Label Label1;protected System.Web.UI.WebControls.Button Button1;private void Button1_Click(object sender, System.EventArgs e){ this.Button1.Enabled=false; this.Label1.Text=sender.GetType().ToString();}上面的先将enabled属性设为false,后将Label1的text属性设为System.Web.UI.WebControls.Button 正确的方法是在Page_Load中加入下面一句:Response.Write("<script>var imgBtnReadOKClickTimer=0;window.attachEvent(\"onload\", function(){if(window.document.getElementById(\"imgBtnReadOK\")==null || window.document.getElementById(\"imgBtnReadOK\")==\"undefined\")return;window.document.getElementById(\"imgBtnReadOK\").attachEvent(\"onclick\", function(){imgBtnReadOKClickTimer++;if(imgBtnReadOKClickTimer !=1)return(false);});});</script>");其中imgBtnReadOK为Button的ID,你只需要把它替换成你想要的Button ID就可以了 to lovinger2000(EUDEV.NET) ,我试过了,不好用阿 在pageload里加一个buttonname.Attributes.Add("onClick","javascript:document.buttonname.disabled=\"disabled\";"); 用 lovinger2000(EUDEV.NET) 和ldhao(翰海) 的方法都可以实现"按钮设定为enabled=false"的效果,可是该button下边的服务器端的代码也不执行了阿 use this <input type=button onclick="SetDisabled" runat=server id="button1" ....><script language=javascript > function SetDisabled() { document.all.button1.disabled=true;}服务器端Server.click....上面的是实现方法,代码未经测试,但思路一定正确 在webform3.aspx中代码如下:<%@ Page language="c#" Codebehind="WebForm3.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm3" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML> <HEAD> <title>WebForm3</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <script language=javascript > function abc() { var mybutton=document.getElementById("Button1"); mybutton.disabled=true; //变灰 __doPostBack("Button1",""); //执行服务器端button1的click事件 } </script> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"></asp:TextBox> <asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 8px; POSITION: absolute; TOP: 40px" runat="server" Text="Button"></asp:Button> </form> </body></HTML>在webform3.aspx.cs中主要两个方法中的代码如下 :private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 this.GetPostBackEventReference(Button1); //这句很关键,有这句才能让客户端执行服务器端事件。 Button1.Attributes.Add("onclick","abc();"); }//用作测试用的private void Button1_Click(object sender, System.EventArgs e) { this.TextBox1.Text="1"; int k=0; for(int i=0;i<9999;i++) for(int j=0 ;j<999;j++) k=9; this.TextBox1.Text="1"; }测试结果:由于两个循环运行时间比较长,在运行时,button按钮一直是灰的,只有运行完才会恢复,如果运行完后还想变为灰的,那在最后添加一个this.Button1.Enabled=false;就行了。这样就达到了按钮先变灰然后执行服务器端事件。 将截断字符串或二进制数据。 语句已终止。 关于C#的特殊符号(如"~")问题 主页通过基页判断 非注册用户登录时 返回游客的 用户类型 问题。 web 开发模块问题 请教如何动态生成Repeater控件! 难!如何弹出一个窗体,并在弹出的窗体选值,并返回!C#代码实现; 从MSDN下载了个TREEVIEW的代码,怎么一调试就出下面的错! 控件查找问题! 导出图标到Excel dll!我认为asp.net的最大问题! dbf访问问题 求2个正则表达式,只能输入1-12和1-31
可以,你试试就知道了:
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Button Button1;private void Button1_Click(object sender, System.EventArgs e)
{
this.Button1.Enabled=false;
this.Label1.Text=sender.GetType().ToString();
}
上面的先将enabled属性设为false,后将Label1的text属性设为System.Web.UI.WebControls.Button
Response.Write("<script>var imgBtnReadOKClickTimer=0;window.attachEvent(\"onload\", function(){if(window.document.getElementById(\"imgBtnReadOK\")==null || window.document.getElementById(\"imgBtnReadOK\")==\"undefined\")return;window.document.getElementById(\"imgBtnReadOK\").attachEvent(\"onclick\", function(){imgBtnReadOKClickTimer++;if(imgBtnReadOKClickTimer !=1)return(false);});});</script>");
其中imgBtnReadOK为Button的ID,你只需要把它替换成你想要的Button ID就可以了
<script language=javascript >
function SetDisabled()
{
document.all.button1.disabled=true;
}服务器端
Server.click....上面的是实现方法,代码未经测试,但思路一定正确
<%@ Page language="c#" Codebehind="WebForm3.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm3" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm3</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language=javascript >
function abc()
{
var mybutton=document.getElementById("Button1");
mybutton.disabled=true; //变灰
__doPostBack("Button1",""); //执行服务器端button1的click事件
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"></asp:TextBox>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 8px; POSITION: absolute; TOP: 40px" runat="server"
Text="Button"></asp:Button>
</form>
</body>
</HTML>在webform3.aspx.cs中主要两个方法中的代码如下 :
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
this.GetPostBackEventReference(Button1); //这句很关键,有这句才能让客户端执行服务器端事件。
Button1.Attributes.Add("onclick","abc();"); }
//用作测试用的
private void Button1_Click(object sender, System.EventArgs e)
{
this.TextBox1.Text="1";
int k=0;
for(int i=0;i<9999;i++)
for(int j=0 ;j<999;j++)
k=9;
this.TextBox1.Text="1";
}测试结果:由于两个循环运行时间比较长,在运行时,button按钮一直是灰的,只有运行完才会恢复,如果运行完后还想变为灰的,那在最后添加一个this.Button1.Enabled=false;就行了。这样就达到了按钮先变灰然后执行服务器端事件。