环境:
有一个girdview,其上一个模板列checkbox。目标:
点击该checkbox,弹出confirm对话框,确认后,执行OncCheckedChanged事件我的实现
Page_Load事件中给checkbox添加javascript
 protected void Page_Load(object sender, EventArgs e)
    {      
        
        if (!IsPostBack)
        {  
            bind();
            for (int i = 0; i <= ModifyGridView.Rows.Count - 1; i++)
            {
                ((CheckBox)(ModifyGridView.Rows[i].Cells[2].FindControl("gridCheckBox"))).Attributes.Add("onclick", "return confirm('您是否确定要驳回这条信息?');");
            }
        }
    }确认后应该执行的代码:
protected void gridCheckBox_CheckedChanged(object sender, EventArgs e)
    {
        
        bind();
        
    }
可是我发现弹出确认对话框后,并不执行CheckedChanged事件代码,为什么?请高人帮忙,或者用别的方法,只要能实现先确认,后执行代码的功能。奋斗了2多小时,是在搞不定,累死了,求助。

解决方案 »

  1.   

    哥们写错地方了。
    ((CheckBox)(ModifyGridView.Rows[i].Cells[2].FindControl("gridCheckBox"))).Attributes.Add("onclick", "return confirm('您是否确定要驳回这条信息?');");应该写在GridView的RowDataBound里
      

  2.   


        protected void ModifyGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {        if (e.Row.RowType == DataControlRowType.DataRow)
            {
    ((CheckBox)ModifyGridView.Rows[i].Cells[2].FindControl("gridCheckBox"))).Attributes.Add("onclick", "return confirm('您是否确定要驳回这条信息?');");
            }    }
      

  3.   

    checkbox的autopostback = true
    该checkbox为gridview的一个模板列
      

  4.   

    用htmlCheckbox比较好。确定后再用ajax执行后台bind();
      

  5.   


     protected void ModifyGridView_RowDataBound(object sender, GridViewRowEventArgs e) 

       if (e.Row.RowType == DataControlRowType.DataRow) 
       { 
          ((CheckBox)ModifyGridViewe.Row.Cells[2].FindControl("gridCheckBox"))).Attributes.Add("onclick", "return confirm('您是否确定要驳回这条信息?');"); 
       } 
    }
      

  6.   

     protected void ModifyGridView_RowDataBound(object sender, GridViewRowEventArgs e) 

       if (e.Row.RowType == DataControlRowType.DataRow) 
       { 
          ((CheckBox)e.Row.Cells[2].FindControl("gridCheckBox"))).Attributes.Add("onclick", "return confirm('您是否确定要驳回这条信息?');"); 
       } 
    }
      

  7.   

    我这边好用 
    下面是部分代码    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                System.Collections.ArrayList al = new System.Collections.ArrayList();
                al.Add("a");
                al.Add("b");
                al.Add("c");            GridView1.DataSource = al;
                GridView1.DataBind();
            }    }    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ((CheckBox)e.Row.Cells[2].FindControl("gridCheckBox")).Attributes.Add("onclick", "return confirm('您是否确定要驳回这条信息?');");
            }    }
      

  8.   

    to wl076
    兄弟也许没明白我的意思,这段代码,弹出confirm是没问题,问题是确定后不执行checkbox的onchange事件 
    protected void gridCheckBox_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox t = (CheckBox)sender;
            int Index = ((GridViewRow)(t.NamingContainer)).RowIndex;//获得行号               ajaxalert(ModifyGridView.Rows[Index].Cells[4].Text.ToString().Trim());
            bind();
      
        }
    我不知道我表达清楚了没有
      

  9.   

    应该写在GridView的RowDataBound里
      

  10.   

    ajax代码不会写啊,能不能具体点,或者给个实例,谢谢
      

  11.   

    为了给后来人查询方便,贴出源代码仅供参考:aspx页面上,添加如下代码:
    <script type="text/javascript">
    <!--
    function confirmation() {
    var answer = confirm("确认驳回?")
    if (!(answer))
    {
       return;
    }}
    //-->
    </script>服务器端作如下处理:
     protected void ModifyGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //Label4.Text = ((TextBox)(GridView1.Rows[].Cells[7].Controls[0])).Text.ToString().Trim();
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ((CheckBox)e.Row.Cells[2].FindControl("gridCheckBox")).Attributes.Add("onclick", "confirmation();");
            }
    }