为了实现全选功能 我在CheckBox2事件加以下代码 CheckBox2在HeadTempelate中
如果GridView放在一个单独的页面中 一点问题也没有
但是把GridView当作一个用户控件,在页面中动态加载
用LoadControl来实现 就会出现问题
似乎是不能同步。。
是不是加载顺序有问题?
(把GridView做成User控件,在index.aspx中用LoadControl加载User,index.aspx又有母板页a.master)
protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
    {
        foreach (GridViewRow gr in GridView1.Rows)
        {            CheckBox chk = (CheckBox)gr.Cells[4].FindControl("CheckBox1");
            if (!chk.Checked)
            {                chk.Checked = true;
            }
            else
            {                chk.Checked = false;
            }
        }
    }

解决方案 »

  1.   

    哎 问题解决!
    弄了一下午 原来就是少一个if(!IsPostBack)的问题
    郁闷死了!!
    楼上的大哥 分全给你了
      

  2.   

    lz代码有问题 你应该判断全选是否被选择protected void CheckBox2_CheckedChanged(object sender, EventArgs e) 
        { 
             //获取全选的事件源
                CheckBox ckAll = (CheckBox)sender;
                //如果是全选
                if (ckAll.Checked) 
                { //遍历所有的选择
                    foreach (GridViewRow gr in GridView1.Rows) 
                      {
                    CheckBox chk = (CheckBox)gr.Cells[4].FindControl("CheckBox1"); 
                    chk.Checked = true; 
                      } 
                } 
                else 
                { 
                    foreach (GridViewRow gr in GridView1.Rows) 
                      {
                    CheckBox chk = (CheckBox)gr.Cells[4].FindControl("CheckBox1"); 
                    chk.Checked = false; 
                      } 
                } 
            
        } 
      

  3.   

    实现全选最简单的就用js,如果用js就不用考虑!page.IsPostBack了js让某一个控件下面所有的checkbox,或者页面中对应的checkbox全选的办法function SetCheckBoxChecked(parentObjId,checkBoxName)
    {
        var el=document.getElementById(parentObjId);
         
        var obj=el.getElementsByTagName("input");
        {
             for(var i=0;i<obj.lenght;i++)
              {
                  if(obj[i].type=="checkbox" && obj[i].name==checkBoxName)
                  {
                     obj[i].checked=ture;//如果是要实现返选就用obj[i].checked=!obj[i].checked;
                   }
             }     }}
    使用方法不就写了吧,只要parentObjID对应的控件包括checkbox就行
      

  4.   


    请教obj[i].name==checkBoxName什么意思,怎么不是
    obj[i].name==“checkBoxName” 
    谢谢!
      

  5.   

    checkBoxName是方法的第二个参数名称这样不是灵活嘛
      

  6.   

    http://blog.csdn.net/xianfajushi/archive/2008/11/30/3413317.aspx