//添加一个组操作保存按钮
            Button btnAllSave = new Button();
            btnAllSave.ID = "btnAllSave";
            
            btnAllSave.Click += new EventHandler(btnAllSave_Click);
            btnAllSave.Attributes.Add("onclick", "javascript:return confirm('保存后无法恢复,确认保存?')");
            btnAllSave.Text = "保存设置";
            btnAllSave.CssClass = "button";
            this.GridView1.FooterRow.Cells[7].Controls.Add(btnAllSave);
 protected void btnAllSave_Click(object sender, EventArgs e)
    {
        this.lblMessage.Text = "执行了";
        Response.Write("<script>alert('jake')</script>");
        return;
}
大家帮忙看看,为什么点击按钮的时候,无法响应事件呢?

解决方案 »

  1.   

    代码都没帖全.
    其实不用想就知道,btnAllSave.Click += new EventHandler(btnAllSave_Click); 这句没放对地方.
      

  2.   

    动态添加的按钮
    当你点击该按钮后   发生回传  页面重新加载  你天加的按钮事件  没了
    所以没响应事件
    这需要你用AJAX 异步的方式 来实现该功能
      

  3.   

    Allen_Chen_ ,你好,谢谢你的回复!
    那应该放在什么地方呢?
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridView();
                PagerDataBind();
            }        //this.GridView1.PagerSettings.Mode = PagerButtons.NumericFirstLast;
            //this.GridView1.PagerSettings.FirstPageText = "首页";
            //this.GridView1.PagerSettings.LastPageText = "尾页";
            //this.GridView1.PagerSettings.Position = PagerPosition.TopAndBottom;
        }
    /// <summary>
        /// 绑定数据
        /// </summary>
        private void BindGridView()
        {
             //这里的代码省略了,是绑定GridView1数据的          //添加一个组操作保存按钮 
                Button btnAllSave = new Button(); 
                btnAllSave.ID = "btnAllSave"; 
                 
                btnAllSave.Click += new EventHandler(btnAllSave_Click); 
                btnAllSave.Attributes.Add("onclick", "javascript:return confirm('保存后无法恢复,确认保存?')"); 
                btnAllSave.Text = "保存设置"; 
                btnAllSave.CssClass = "button"; 
                this.GridView1.FooterRow.Cells[7].Controls.Add(btnAllSave); 
    }
       protected void btnAllSave_Click(object sender, EventArgs e) 
        { 
            this.lblMessage.Text = "执行了"; 
            Response.Write(" <script>alert('jake') </script>"); 
            return; 

      

  4.   

    hmily821023,你好,谢谢你的回复!
    但是我的客户端代码可以执行啊?
    btnAllSave.Attributes.Add("onclick", "javascript:return confirm('保存后无法恢复,确认保存?')");  
    这段会执行的!
      

  5.   

       protected void btnAllSave_Click(object sender, EventArgs e)  
        {  
            this.lblMessage.Text = "执行了";  
            Response.Write("  <script>alert('jake')  </script>");  
            return;  
    }  这个没执行吧!  因为回传  刷没了   
      

  6.   

    hmily821023,不知道可有好的解决方案?难道真的要用ajax做吗?
    具体怎么做呢?这个Button是动态的?
    有没有案例介绍一下可以吗?
    ---------------------------谢谢上面所有大虾的意见!
      

  7.   

    hmily821023,你好,我调试过,btnAllSave_Click方法不会执行!
      

  8.   

    所有的动态控件应该在Page_Init()里面初始化,然后每次加载的时候,也应该手动处理ViewState在Page_PriLoad中以及之后,所有控件的ViewState 都会被重置,就是说,那个时候你的button已经不存在了…… 
      

  9.   

    引用AJAXPRO.DLL 
    动态生成按钮  给该按钮写JS   function test(){}实现功能
    异步的方式执行  实现你要的功能 
      

  10.   


    恩,我也相信是这样。因为我点击那个按钮的时候,页面刷新了,但是那个Button不见了。
    这点证明你所说的。不过因为每一个PageSize都是要有这个Button,所有在数据绑定之后重新初始化了一次Button,但是这样做的效果就是像上面所诉的现象!不知道有没有什么好的解决方案,请指教!谢谢你的回复!
      

  11.   


    恩,谢谢。我去试试!不过这样,我的项目里面已经用了一个AJAX框架了。
    MagicAjax.dll
    经过处理的,支持中文。
    试试看吧,不知道会否成功!
      

  12.   

    终于帖出来了啊.你看你在postback的时候没有执行到绑事件的那段代码.所以就产生了问题.
      

  13.   

    Allen_Chen_ ,你好。
    不知道你的意思是不是说:要把BindGridView();放在Page_Load里面的if(!IsPostBack)之外?
    就是要每次都能执行到?但是如果这样的话,每次都被刷新成以前的数据了,我的数据如何能保存呢?
    我试过了,如果这样做,的确是可以执行了,但是先前数据就刷没了,PagerDataBind(); 事件执行了2次。
    算了,我还是改用静态的Button吧,谢谢各位的回复,现在结贴!
      

  14.   

    btnAllSave.Attributes.Add("onclick", "javascript:return confirm('保存后无法恢复,确认保存?')"); 
    改为
    btnAllSave.Attributes.Add("onclick", "javascript:if (!confirm('保存后无法恢复,确认保存?')) {return false;}");
      

  15.   

    按扭的事件是基于委托实现的
    无法响应是此事件未实例化
    btnAllSave.Click += new EventHandler(btnAllSave_Click); 
    放在窗中设计中
      

  16.   

    有可能,不过不知道你所说的放在窗体设计中是什么意思?
    放在Page_Load事件里面?还是?
    我的按钮是页面动态生成的,不是窗体设计上的啊?