两种方法都试了,不行~
1.
CS中:
Button1.Attributes.Add ("onclick","return ispost()");
ASPX中:
<script>
function ispost()
{
    if (...)
   {
      ...
      return false;   
   }
   document.Form1.Button1.disabled = true;
   return true;
}
<script>
以上程序在执行后,因为加了“document.Form1.Button1.disabled = true;”而不能向后台CS中提交,执行private void Button1_Click 事件,可去掉就没问题。2.
直接在CS中,利用.net所具有属性:
private void Button1_Click(object sender, System.EventArgs e)
{
       Button1.Enabled = false;
       执行代码...
       Button1.Enabled = true;
}
也不可能,因为根据WEB的特性,提交后,中间的“执行代码...”完全执行完才能返回整个html的代码。而在提交瞬间,并不改变状态,除非完全提交后,才执行Button1.Enabled = false;但这个状态跟本看不到,只能看到最后的Button1.Enabled = true;状态。

解决方案 »

  1.   

    如果是runat server的话,可能的确不是很好办。
    因为这个必须要经过服务器处理后才能进行下一步的处理。一般是防止用户重复提交。
    做这种的话,还是用JS代码吧。从道理上说,用户提交后,应该在客户端就把Disable Button的代码执行了才行。这样才能达到目的。
      

  2.   

    我觉得这个时候应该考虑不要使用Runat Server的Button了吧?
      

  3.   

    哎,郁闷,原来在ASP或PHP下,用HTML控件,用JS代码很容易搞定的,在.net下真是麻烦~~
      

  4.   

    对,看这样只能用button的HTML控件了。WEB控件真的就没有办法了~~
      

  5.   

    1.
    CS中:
    Button1.Attributes.Add ("onclick","return ispost()");
    ASPX中:
    <script>
    function ispost()
    {
        if (...)
       {
          ...
          return false;   
       }
       document.Form1.Button1.disabled = true;
       document.Form1.submit();
       return false;
    }
      

  6.   

    1.<form id="Form1" method="post" runat="server">去掉runat="server"2.添加action="getreq.aspx",getreq.aspx你传入的参数的页面,可以是本页面3.取得from提交的值,Request.From["TextBox"]4.去掉Button的 runat="server"的属性,改为Html控件。
    这样就可以脱离原.Net页面模型。自由度更高,处理速度更快。不信你试试。
      

  7.   

    这个不好处理,只能用一些障眼法,比如点击按钮后把按钮替换为另一幅看似disabled的图片,事件执行完了再把图片替换回来。看后面高手是否有高招。
      

  8.   

    而且还没.net自动生成的繁多的隐含代码,viewstate。非常干净,清爽的页面。关键自由度高,任何页面(例如html,jsp)提交的参数都可以到一个地方统一处理。
      

  9.   

    你用两个按钮
    <input type=button id="BtnSending" value="发送" onclick="ShowSending(true)">
    <asp:button id="Btn_Send" runat="server" Text="发送" style="display:none"></asp:button></td>js里面这么写:
    function ShowSending(val) 
    {
    document.all.Btn_Send.click();
    document.all.BtnSending.disabled = true;

    }
    ---------------------------
    苦海无边 回头无岸
    ---------------------------
      

  10.   

    TO:jsyhello(不认输):
    加入document.Form1.submit();,在CS中,并不能执行private void Button1_Click 事件。
    除非改为上面多数建议的HTML控件方式~~~TO:real0411(大头牛) 
    改为HTML方式,感觉就向原来的ASP或PHP似的,提交后接收form表单,唯一不同的是它在CS中接收。但如果能在WEB控件中实现就更好了,CS中就不需要改动了,哎~!!
      

  11.   

    可以用ajax实现
    在调用ajax方法之前设置不可用
    然后执行ajax方法,判断这个方法执行的结果,再将其设置可用
      

  12.   

    TO:robert2004(我能发财) 方法不错,用个隐藏的WEB BUTTON控件~~~~
      

  13.   

    恩,WEB控件的确用起来是开发很方便,但自由度太差,效率也不高。一直觉得aspx显示或反应都比较迟缓,不如asp,jsp页面反应迅速,应该是viewstate的隐含代码的作用,而且WEB控件数量越多,_VIEWSTATE的值越多。研究好多.Net网站,有的站点查看源代码,居然N多viewstate值,滚动条拉都拉不完。来源很多,用户控件,自身页面控件,功能复杂度。因此,我觉得效率很重要。所以现在全部改为“老式”方法。国内有个.net论坛做的还错,推荐一下:http://www.cnvery.net/cvb/topic.aspx?topicid=4&testcookie=true
    我最欣赏的是他们开发理念。
      

  14.   

    button.enable等于真假,可以判断是否可用
      

  15.   

    <SCRIPT LANGUAGE="javascript">
    <!--
    function input(ok)
    {
        var M1=ok.ReplyContent.value;
        if (M1=='') {
    alert('回复内容不可以为空.');
    return false;
    }
    ok.B1.disabled =true;
        return true;
    }
    //-->
    </script>
    <FORM METHOD=POST onsubmit="return input(this)">
    <textarea cols="85" rows="10" name="ReplyContent" class='content'></textarea>
      <input type="submit" value="发出回复" border="0" name="B1"  WIDTH="60" HEIGHT="20" class="formtext">
    </FORM>
      

  16.   

    谢谢各位回复。TO :shoutor(http://www.i2key.com)
    你的方式还是HTML的方式,这个方法是可以实现那个效果的~~~~~但我希望用的是WEB BUTTON,可能除了上面那个隐藏BUTTON的方法,就没有其他方法了~~
      

  17.   

    其实有更简单的方法:
    把你方法1中的button1换成html控件,然后设置成在服务器端运行,然后就可以实现了
      

  18.   

    WEB控件怎么了?不要因为用不好,就说他不好用!对于浏览器起来说有WEB控件和html控件的区别吗?根本就没有!那么能应用在 html控件 上的js为什么不能应用到 WEB控件 上面?!!
    另外不明白,楼主的第一种方法为什么不行呢?提交后,按钮会自动恢复的呀。难道js也会保存状态吗?是逻辑有问题吧?!!!
      

  19.   

    webform1.aspx
    <HTML>
    <HEAD>
    <script language="javascript">
    function Check()
    {
    if(window.postform.ch1.checked == false)
    {
    window.postform.ch1.checked = true;
    window.postform.btn_submit.value = " 等待处理... "; //可以用别的方法代替,如按钮样式
    //window.postform.btn_submit.disabled = true;  //设置后无法提交到后台
    window.postform.target="setWin";
    window.postform.action = "webform1.aspx";
    window.postform.submit();
    return true;
    }
    else
    {
    return false;
    }
    }
    </script>
    </HEAD>
    <body>
    <iframe border="0" name="setWin" frameBorder="0" width="0" height="0"></iframe>
    <form id="postform" method="post" runat="server">
    <asp:button id="btn_submit" runat="server" Text=" 点击 "></asp:button>
    <INPUT type="checkbox" name="ch1" style="display:none"></form>>
    </body>
    </HTML>webform1.aspx.cs
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button btn_submit;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    btn_submit.Attributes.Add("onclick","return Check();");
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.GetPostBackEventReference(btn_submit);
    this.btn_submit.Click += new System.EventHandler(this.btn_submit_Click);
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion private void btn_submit_Click(object sender, System.EventArgs e)
    {
    //执行代码
    string outValue = "输出的内容";
    Response.Write("<script language=javascript>alert('" + outValue + "');");
    Response.Write("parent.window.postform.ch1.checked = false;");
    Response.Write("parent.window.postform.btn_submit.value=\" 点击 \"; </script>");
    Response.End();
    }
    }想不到别的方法,只能想到上面的
      

  20.   

    btn.Attribs.Add("OnClick", "this.disabled = true;")
      

  21.   

    TO:jyk(喜欢编程。和气生财。共同提高。共同进步)
    WEB控件怎么了?不要因为用不好,就说他不好用!对于浏览器起来说有WEB控件和html控件的区别吗?根本就没有!那么能应用在 html控件 上的js为什么不能应用到 WEB控件 上面?!!
    另外不明白,楼主的第一种方法为什么不行呢?提交后,按钮会自动恢复的呀。难道js也会保存状态吗?是逻辑有问题吧?!!!================================================================不知道你进行过测试没有?第一种方法因为加了“document.Form1.Button1.disabled = true;”JS前台程序执行到这就停止了,而不能向后台CS中提交,从而执行private void Button1_Click 事件。如果去掉了document.Form1.Button1.disabled = true;就没问题,private void Button1_Click 事件可以正常执行,如果必须要加document.Form1.Button1.disabled = true;那么,再他后面必须加上“document.Form1.submit();”这样也能提交,但提交到后台页面,只能用Request.Form方式去进行处理。
      

  22.   

    非常抱歉,我没有测试楼主的代码。我测试了一下,的确,几条就停止了,也就是没有提交。但是我又测试了一下 html页面的提交情况,结果是一样的。也就是说 这和 WEB控件  是没有关系的。========================<HTML>
    <HEAD>
    <title>WebForm</title>
    <script language=javascript>
    function Check()
    {
    alert("a");
    //document.getElementById("Button1").disabled = true;
    document.getElementById("Button1").style.display = "none";
    }
    </script>
    </HEAD>
    <body >
    <form name="Form1" method="post" action="webform.aspx" id="Form1"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="90%" align="center" border="0">
    <TR>
    <TD></TD>
    <TD></TD>
    </TR>

    <TR>
    <TD></TD>
    <TD>
    <input type="submit" name="Button1" value="Button" id="Button1" onclick="Check();"/></TD>
    </TR>
    </TABLE>
    </form>
    </body>
    </HTML>=====================我的html页面的测试代码。
    另外我想是想防止重复点击提交按钮,如果是这样的话可以稍稍改一下。document.getElementById("Button1").style.display = "none";这样就可以隐藏 按钮了。也可以达到同样的效果。