我的页面里有多个Datalist,每个Datalist的项都有一个“checkbox”,datalist还有“全选”功能。
要求每个Datalist的“全选”都互不干扰。
我写的是只要点其中一个“全选”,页面上所有的checkbox都被选中。

解决方案 »

  1.   


    function setCheckBox(vo)  //这里的vo 是传入你的对象id 如datalist1  datalist2
    {
      var   grd   =   document.getElementById(vo); 
                var   chkArr   =   grd.getElementsByTagName("input"); 
                for(var   i   =0;   i< chkArr.length;   i++)  { 
                            if(chkArr[i].type   ==   "checkbox"   &&   
                                    chkArr[i].id.indexOf("one") > -1)   { 
        
                                    chkArr[i].style["display"]="none";
                            } 
                            if(chkArr[i].id.indexOf("all") > -1)  { 
      
                                    chkArr[i].style["display"]="none";
                            } 
                    }
     }
      

  2.   

    参考这个,把它改为DataList,即是说,传入DataList 即可:http://blog.csdn.net/insus/archive/2008/03/09/2159352.aspx
      

  3.   

    <script language="JavaScript1.2">
    <!--
    function allselect(){
    var links=document.all.tags("input")
    var names=document.getElementById("button").value;
    var total=links.length
    var values="";
        if(names=="全选")
        {
        document.getElementById("button").value="反选";
                for (i=0;i<total;i++){
                if(links[i].id=="gbtopic_id")//注gobtopic_id是指checkbox的ID
                {
                links[i].checked=true;
                values=values+","+links[i].value;
                }            }
        }
        else
        {
        document.getElementById("button").value="全选";
                for (i=0;i<total;i++){
                if(links[i].id=="gbtopic_id")//注gobtopic_id是指checkbox的ID
                {
                links[i].checked=false;
               // values=values+","+links[i].value;
                }            }
        
        }}
    //-->
    </script>
      

  4.   

    “var links=document.all.tags("input")”
    这个是取到页面上所有的“input”,很明显和我的要求不一样。
      

  5.   

    用1楼的方法有个问题。不论选中几个,只要有一个被选中,在CS文件里会判断出当前Datalist里所有的都已选中。
      

  6.   

    每个DataList的Id不同对吧?那么可以这样试一下:
    把每个checkbox加上一个属性,随便加什么都行,要与所在的datalist联系起来,目的是为了区分一个datalist里面的一组checkbox与另一个datalist的另一组checkbox。然后你利用这个属性,来判断全选的是哪个datalist里的。
    给你一个简单的例子,不全,意思就是上面说的意思。
    <input name="id" type="checkbox" id="ckb<%#DataBinder.Eval(Container.DataItem, "StarID")%>" group='<%#DataBinder.Eval(Container.DataItem, "StarName")%>' /><%#DataBinder.Eval(Container.DataItem, "StarName")%>其中group就是我们加的属性。在JS中,这样利用:
    function select_cboxes(tbname,bool)
    {
        var limitCode = IsLimitCode();
    var controlIndex;
    var element;
    var numberofControls;
    numberofControls = document.forms[0].length;
    for (controlIndex=0; controlIndex<numberofControls; controlIndex++)
    {
    element = document.forms[0][controlIndex];
    var tm = element.getAttribute("group",0); //利用属性
    if ((element.type == "checkbox") && ( tm == tbname))
    {  
                element.checked = bool;    
    }
    }
    }

    你再看看,加个属性,区分开来,就是这么个思路。