在前台datagrid(命名为dg1)的头部做了个模板列,命名为cb3
还有个模板列,命名为cb4
然后我写了这样个函数:public void SelectAll2(object sender, System.EventArgs e)
{
foreach(DataGridItem dgi in this.dg.Items)
{

CheckBox cb4=new CheckBox();
cb4=(CheckBox)dgi.Cells[0].FindControl("cb4");
cb4.Checked=((CheckBox)sender).Checked;
}
在前台页加了个OnCheckChange="SelectAll2"
但这样写还是没有实现全选功能
希望大家给个好意见,不用js实现

}

解决方案 »

  1.   

    帮定datagrid是不是没有在ispostback里?
      

  2.   

    实现DataGrid中添加CheckBox列(全选与否) :
    http://blog.csdn.net/chengking/archive/2005/10/08/497520.aspx
      

  3.   

    public void SelectAll2(object sender, System.EventArgs e)
    {
    foreach(DataGridItem dgi in this.dg.Items)
    {

    CheckBox cb4=(CheckBox)dgi.Cells[0].FindControl("cb4");
    cb4.Checked=true;
    }
    }
      

  4.   

    在前台页加了个OnCheckChange="SelectAll2"
    ————————————————————————————————————
    这个就不知道你是什么控件了。通常在DataGrid下面或者上边放一个CheckBox,同时AutoPostback=true。
      

  5.   

    //全选 CheckAll
    //反选 CheckNone
    //刷新 Refreshfunction CheckAll(ObjData,Aim)
    {//全选
           var InputAll = ObjData.all.tags('input');
           var InputLenth = InputAll.length;
           var str ="";
                 for(var i=0;i<InputLenth;i++)
           {
                var TagName = InputAll[i].type
               
               if(TagName=="checkbox")
                {       
                  InputAll[i].checked=true;
                  str+=InputAll[i].value+"|";
                 }
              
            }
              Aim.value = str; }
      
     /////////////////////////////////////////////////// 
    /////////////////////////////////////////////////
    //反选
    function CheckNon(ObjData,Aim)
    {
          var str="" ;
      
           var InputAll = ObjData.all.tags('input');
           var InputLenth = InputAll.length;
          
           for(var i=0;i<InputLenth;i++)
           {
                var TagName = InputAll[i].type
               
               if(TagName=="checkbox")
               {
                     if(!InputAll[i].checked)
                     {
                       InputAll[i].checked =true;
                       str+=InputAll[i].value+"|";
                       
                       } 
                       else
                       {
                         InputAll[i].checked = false;
                        }
                }
              
            }
         Aim.value = str;
      }
     ////////////////////////////////////////////
     ////////////////////////////////////////////
     //如果用户自己选择框,不是全选或者反选
     function SelfCheck(ObjData,Aim)
     {
           var str ="";
           var InputAll = ObjData.all.tags('input');
           var InputLenth = InputAll.length;
          
           for(var i=0;i<InputLenth;i++)
           {
                var TagName = InputAll[i].type
               
               if(TagName=="checkbox")
               {
                     if(InputAll[i].checked)
                     {
                        str+=InputAll[i].value+"|";
                       } 
                                
                }
              
            }
           Aim.value = str;
         
     } 
    -----------------------------上面的js代码,实用与DATAGRID,DATALIST
    ---------------------------- ObjData指的是数据控件,AIM指的是隐藏的hidden
    -----------------------------
    <script language="javascript" src="your js" defer></script>
      

  6.   

    public void SelectAll2(object sender, System.EventArgs e)
    {
    foreach(DataGridItem dgi in this.dg.Items)
    {

    CheckBox cb4=(CheckBox)dgi.Cells[0].FindControl("cb4");
    if(cb4!=null)
    {
    cb4.Checked=true;
    }
    }
    }
      

  7.   

    是的,需要判断 DataGridItem 的type。 if (item.ItemType == ListItemType.Item ||
        item.ItemType == ListItemType.AlternatingItem ||
        item.ItemType == ListItemType.SelectedItem )这时候才 findControl。否则寻找cb4是多余的,并且会找不到。
      

  8.   

    http://blog.csdn.net/sunnystar365/archive/2005/09/28/491139.aspx