如何让一个button只能点一下?防止点击多下而重复提交?

解决方案 »

  1.   

    private void button1_Click(object sender, System.EventArgs e)
    {
    button1.Enabled =false;
    }
      

  2.   

    在按鈕事件裏設一變量(如session,cookie),限制點擊次數...
      

  3.   

    javascript就可以做到了。把按钮disable掉。这里发贴子不就是这样么。
      

  4.   

    在click事件里,将此按钮的Enabled属性设为false
      

  5.   

    同意 fantiny(喻捷) 的方法
    应该在客户端处理,在服务器端的 PostBack 中处理有延时,网速慢时根本行不通
      

  6.   

    private void button1_Click(object sender, System.EventArgs e)
    {
    button1.Enabled =false;
    }
      

  7.   

    应该用javascript实现,否则在服务器端控制的话,在服务器处理并返回之前,按钮还是可点的,你可以参照csdn里回复时的做法,查看元文件就行了
      

  8.   

    按照楼上几位的说法...那直接点IE的刷新按钮的话,是否也能用JS来解决?
      

  9.   

    在.NET中,对于重复提交的按钮处理方法,以往ASP可用的方法,再在已经不在可用了,主要是,如果将按钮在点击之后,变灰,则提交之后服务端即不再认可此按钮的事件.
    所以,可以简单用如下方法去解决.this.Button1.Attributes.Add("realvalue","0");
    this.Button1.Attributes.Add("onclick","this.realvalue ++;if(this.realvalue==1){alert('可提交')}else{alert('不可提交!');}return(false);"); 使用的时候,把后面的return(false);去除即可.
      

  10.   

    在button的onclick后  button1.Enabled =false 就可以了
      

  11.   

    http://www.cnblogs.com/smilnet/articles/24831.html
    自定义按钮:protected override void OnPreRender 重写这个方法
      

  12.   

    Page.IsPostBack属性判断是否提交过,进行控制
      

  13.   

    利用状态机,这个是基础
    参看设计模式的state
      

  14.   

    http://www.cnblogs.com/goody9807/archive/2005/02/04/101896.html
      

  15.   

    <script language="javascript" type="text/javascript">
    //标识页面是否已提交
    var subed = false;

    function check()
    {
    //验证是否重复提交
    if (subed == true)
    {
    alert("信息正在发送给服务器,请不要重复提交信息!");
    return false;
    }
    subed=true;
    }
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Add" method="post" runat="server" onsubmit="return(chec());">
      

  16.   

    看看我这个例子如何(刚刚在别人的一个贴子中发表过)
    在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;就行了。这样就达到了按钮先变灰然后执行服务器端事件。
      

  17.   

    呵呵,我写了一个自定义控件来达到这个目的。using System;
    using System.Drawing;
    using System.ComponentModel;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.Design;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace WebCustomLib.Controls
    {
    /// <summary>
    ///OneOffButton 的摘要说明。
    /// </summary>
    /// 
    [
    ToolboxItemFilter("System.Web.UI",ToolboxItemFilterType.Require),
    ToolboxBitmap(typeof(OnlyOneButton),"OnlyOneButton.OnlyOneButton.bmp"),
    ToolboxData("<{0}:OneOffButton runat=\"server\"></{0}:OneOffButton>")
    ]
    public class OnlyOneButton : System.Web.UI.WebControls.Button
    {
    private const string JAVASCRIPT_ID = "{29FD7A41-49FD4FC4-AFA9-6A0B875A1A51}";
    private const string JAVASCRIPT_HOOK = "return OneOffButton_Click_Handle(this);";
    private const string JAVASCRIPT_SCRIPT = "\n"
    +"<SCRIPT Language=\"JavaScript\">\n"
    +"function OnlyOneButton_Click_Handle(ctrl)\n{\n"
    +"setTimeout(\"OnlyOneButton_Delay(\\\"\"+ctrl.name+\"\\\")\",100);\n"
    +"return true;\n}\n"
    +"function OnlyOneButton_Delay(ctrlname)\n{\n"
    +"eval(\"document.all.\"+ctrlname+\".disabled=true\");\n}\n"
    +"</SCRIPT>\n"; public OnlyOneButton()
    {
    this.Text = "OnlyOneButton";
    } protected void RenderJavaScript()
    {
    if(!Page.IsClientScriptBlockRegistered(JAVASCRIPT_ID))
    {
    Page.RegisterClientScriptBlock(JAVASCRIPT_ID,JAVASCRIPT_SCRIPT);
    }
    } protected override void AddAttributesToRender(HtmlTextWriter writer)
    {
    base.AddAttributesToRender (writer);
    writer.AddAttribute("OnClick",JAVASCRIPT_HOOK);
    } protected override void OnPreRender(EventArgs e)
    {
    base.OnPreRender (e);
    RenderJavaScript();
    }
    }
    }