我想在checkboxlist中有一个选项为all,当选中该项时,所有的选项全部选中,而如果去掉某一选项时,all选项自动不再选中。所有这些动作在客户端完成,不要提交到服务器从而引起整页面刷新。

解决方案 »

  1.   

    str_checkbox_id是服务器控件名
    在onclick中调用,比如onclick="SelectAllCheckBox(this, 'CB_Module')"// 根据str_checkbox_id的状态来实现全选/全取消
    function SelectAllCheckBox( tempControl, str_checkbox_id )
    {
    var cb_header = tempControl;
    var inputs = document.all.tags("INPUT");

       for (var i = 0; i < inputs.length; i++) // 遍历页面上所有的 input
       {  
        if (inputs[i].type == "checkbox" && inputs[i].id.substr(inputs[i].id.length - str_checkbox_id.length, str_checkbox_id.length) == str_checkbox_id )
          inputs[i].checked = cb_header.checked;
        }
    }
      

  2.   

    我没太看明白上面的代码,我的checkboxlist是服务器端的控件,里面的选项要动态的从数据库中加载,然后再手动地添加一项all,在选择其中的选项时,希望实现上面我想要得功能。
    请大家帮忙!
      

  3.   

    function checkall(val)
    {
        for(var i=0;i<document.all.length;i++)
        {
            if(document.all(i).tagName == "SELECT" && document.all(i).type == "select-one" && document.all(i).id != "dropAll")
            {
                document.all(i).options[val].selected = true;
            }
        }
    }
      

  4.   

    “遍历页面上所有的 input”?忒大胆呀。foreach(ListItem m in yourCheckBoxList.Items)
      m.Attrobutes["onclick"]=yourSelectAllCheckBox.ClientID+".checked=false;";
      

  5.   

    请大家说的详细一点。
    checkboxlist 并没有onclick属性呀?
      

  6.   

    Q: checkboxlist 并没有onclick属性呀?
    ————————————————————————————————————————
    A:那个不是 item 上边的嘛,再说是.Attributes["onclick"]也不是.onclick,要注意。给你写完整一点:string scp="if(this.selected){";
    foreach(ListItem m in yourCheckBoxList.Items)
      {
        m.Attrobutes["onclick"]=yourSelectAllCheckBox.ClientID+".checked=false;";
        scp += m.ClientID+".checked=this.checked;";
      }
    scp += scp+"};";
    yourSelectAllCheckBox.Attributes[onclick]=scp;
      

  7.   

    string scp="if(this.selected){";
    foreach(ListItem m in yourCheckBoxList.Items)
      {
        m.Attributes["onclick"]=yourSelectAllCheckBox.ClientID+".checked=false;";
        scp += m.ClientID+".checked=this.checked;";
      }
    scp += scp+"};";
    yourSelectAllCheckBox.Attributes["onclick"]=scp;
      

  8.   

    唉,我还是没明白?
    sp1234朋友你的方法是不是每点击一下checkboxlist的选项都要提交到服务器呀?
    1楼朋友的方法我用了怎么没反应?可能是我用错了。
    请哪位热心的朋友 把测试页面的代码贴出来吧,我很菜鸟,请勿见笑。
    多谢了。
      

  9.   

    private void CheckBoxList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
      if(this.CheckBoxList1.SelectedItem.Text.Equals("all"))
      {
        for(int i=0;i<this.CheckBoxList1.Items.Count;i++)
        {
          if(!this.CheckBoxList1.Items[i].Selected)
          {
    this.CheckBoxList1.Items[i].Selected=true;
          }
        }
      }
      else
     {
        if(this.CheckBoxList1.SelectedItem.Selected)
        {
          int index=this.CheckBoxList1.Items.IndexOf(this.CheckBoxList1.Items.FindByText("all"));
          if(this.CheckBoxList1.Items[index].Selected)
          {
             this.CheckBoxList1.Items[index].Selected=false;
           }
         }
       }
     }
      

  10.   

    string scp="if(this.selected){";
    foreach(ListItem m in yourCheckBoxList.Items)
      {
        m.Attributes["onclick"]=yourSelectAllCheckBox.ClientID+".checked=false;";
        scp += m.ClientID+".checked=this.checked;";
      }
    scp += scp+"};";
    this.button1.Attributes.add("onclick",scp);  ------------------------------------------------------表示支持!!!!!!楼主把代码写在 page_load 里面!    这段会把脚本代码加入到 空件的属性当中,
    在客户端执行.
      

  11.   

    Q: sp1234朋友你的方法是不是每点击一下checkboxlist的选项都要提交到服务器呀?
    ——————————————————————————————————————————
    A: 不是。那是使用后台产生准确的脚本。
      

  12.   

    由于你不确定要控制的对象是在页面还是组合控件中,会有多少个,所以你既不能像当然地在脚本中规定控件的客户端id(由于不能准确知道id,所有有了“遍历整个页面”那种吓人写法),也不能随便写函数出去(当你把代码从aspx改为ascx并且复用的时候就会和其他地方的同名函数冲突,及时用户控件被在页面上放两个也会冲突)。从这个论坛看,这是两种最常见的写脚本的时候范的错误。所以我说控件的脚本要在控件内写,不要分散到别的地方,免得将来维护麻烦。我昨天还回答了一个关于javascript的帖子,参见:
    http://community.csdn.net/Expert/topic/5067/5067184.xml?temp=.7151758
      

  13.   

    >>由于你不确定要控制的对象是在页面还是组合控件中,会有多少个
    -----------------------------------------------------------------
    我所要控制的就是checkboxlist这一个服务器端的控件,id 是固定的,只是checkboxlist里面的选项需要从数据库中读取,checkboxlist里面事先手动添加了一个选项(all选项),当选中该项时,所有的其他选项都被选中
      

  14.   

    一个foreach不就搞定了吗?哈哈
      

  15.   

    i just think like the first floor.
      

  16.   

    Q:我所要控制的就是checkboxlist这一个服务器端的控件,id 是固定的
    ————————————————————————————————————————
    A:你可能忽视了或者还没有理解一个理念的东西。当用相当的代价去写代码的时候(更何况其实往往更简洁),程序员坚持一种在当时环境千方百计给自己找理由的做法,而不是使用可移植性的思路,这比不懂技术更有害。