<asp:Button ID="Button_Select" runat="server" OnClientClick="OnOk()" Text="Select" OnClick="Button_Select_Click" />
<script type="text/javascript">
    var i=0;
    
    function OnOk()
    {
        document.getElementById("Label1").innerHTML = i; 
        i++;
        var stop1 = setTimeout("OnOk()",100);
        if (i==100)
        {
            clearTimeout(stop1);
            i=0;
            var modalPopupBehavior = $find('programmaticModalPopupBehavior');
            modalPopupBehavior.hide(); 
        }        
    }
  
    </script>protected void Button_Select_Click(object sender, EventArgs e)
    {
        Bll.Book book = new Bll.Book();
        DataSet ds = book.GetList();
        this.GridView1.DataSource = ds;
        this.GridView1.DataBind();
    }在执行了OnOk()以后就不会执行Button_Select_Click事件了.在网上找了说是return fales的问题.不过我还是不懂.求教.!

解决方案 »

  1.   

    你把运行时的页面右键看看源代码就明白了,OnOk没有执行完或者执行时出错了,都不会继续执行。
    检查一下OnOk的代码有没有出错的可能,实在不行就一行一行注掉,看看哪行有问题。
      

  2.   


    <script type="text/javascript">         
       function check()
       {
          if(document.getElementById("<%= txtXM.ClientID%>").value.length==0)
          {
             alert('姓名不能为空!');
             document.getElementById("<%= txtXM.ClientID%>").focus();
             return false;
          }  
       }
     </script>  <asp:Button ID="btn" runat="server" Text="确定" OnClientClick="return check();" OnClick="Click" />
      

  3.   

    <script type="text/javascript">
        var i=0;
        
        function OnOk()
        {
            document.getElementById("Label1").innerHTML = i; 
            i++;
            var stop1 = setTimeout("OnOk()",100);
            if (i==100)
            {
                clearTimeout(stop1);
                i=0;
                var modalPopupBehavior = $find('programmaticModalPopupBehavior');
                modalPopupBehavior.hide(); 
            }        
        }
      
        </script>这段js 有错吗.?
      

  4.   

    OnOk()中要返回true和false。。 楼上正解
      

  5.   

    没时间检测你的JS,但是如果你要使用OnClientClick来提交验证,
    就要加上ture或者false,即一定要加上return,否则OnClick失效。
    当返回false时OnClick服务器端事件才被中止,当你的js验证有错误,也会跳过验证,直接执行服务器端事件OnClientClick。
      

  6.   

    <script type="text/javascript">
        var i=0;
        
        function OnOk()
        {
            document.getElementById("Label1").innerHTML = i; 
            i++;
            var stop1 = setTimeout("OnOk()",100);
            if (i==100)
            {
                clearTimeout(stop1);
                i=0;
                var modalPopupBehavior = $find('programmaticModalPopupBehavior');
                modalPopupBehavior.hide(); 
                
                return true;
            }
        }
    这样还是不执行onclikc事件.!
      

  7.   

    我怀疑是跟setTimeout有关.不知道各位的看法.!
      

  8.   


         我是想点击按钮时弹出层.10秒后层消失.同时绑定GridView.!
      

  9.   

    谁说OnClientClick必须要Return,不是Return的问题,我也怀疑是setTimeout的问题
      

  10.   


    OnClientClick在MSDN中的定义,在引发某个 Button 控件的 Click 事件时所执行的客户端脚本。 
    注意用词,说的是如果你要使用OnClientClick来提交验证,可以不加return,这样就无法返回,从而来提交验证。
      

  11.   

    应该是你自己的JS有问题,
    另外:setTimeout中1秒是1000。
      

  12.   

    试试
    OnClientClick="OnOk();return true" 
      

  13.   

    OnClientClick="OnOk();return true;" 
    function OnOk()
        {
          return true;    
        }
      

  14.   

    拜托了,能不能自己试一下再说,要懂得原理才能看得懂MSDN
      

  15.   


    <head runat="server">
        <title>無題のページ</title>
        <script language="javascript" type="text/javascript">
            function test() {
                alert("1");
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick = "test();" OnClick="Button1_Click" />
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
        </form>
    </body>
    </html>大家可以自己试验一下就知道了,这样的代码,没有Return,你们说走不走后台。
      

  16.   

    Return true的时候跟没有return是样的,会走提交的代码,return false的时候才是不走后台代码
      

  17.   


       还是不行.我记得ajax有那种正在加载中的控件吧.!      不过不记得是什么了.!   求教.
      

  18.   

    你整个代码不是在Ajax中的,没办法用Ajax控件
    我考虑你代码的问题就是setTimeout的问题,因为代码没有执行完,所以不运行后面的Submit
    解决办法很简单,不要使用服务器端控件,使用HTML控件,然后自己写Summit去提交,提交前给一个特定的隐藏域中放一个值,用来在后台判断,这样肯定可以实现你要的效果