使用js写的全选方法
//全选
    function ChooseAll(tb,check)
    {
        var objtb=document.getElementById(tb); 
        var num=objtb.getElementsByTagName("input");
        var check=document.getElementById(check); 
        for(i=0;i<num.length;i++)
        {
           if(num[i].tagName=="INPUT") 
           {  
                if(check.checked==true)
                { 
                 num[i].checked=true;
                } 
                else
                {
                 num[i].checked=false;
                }
            }
         } 
     }
全选和被选的子项checkbox都是用的客户端控件
可以实现全选但是我在此页面点击服务器控件想获取那些行是否被选中。却获取不到repeater的checkbox真实状态,一直都是显示默认的没选中。
我以为是没找到控件,把checkbox默认为选中。结果发现确实是找到了被选的子项。后来我在repeater外面写了一个客户端控件checkbox 同样用上面全选的方法找到它。
不管我怎么点服务器控件刷新,都是可以找到其真实状态(选中或没选中)不解为何repeater里面checkbox为何在全选方法下选中了,但是点服务器控件获取它的时候却还是默认状态。
求解。

解决方案 »

  1.   

    问题是可以解决了,编译通过但是好奇怪这样的写法foreach (var item in Request.Form["Item"].Split(new char[] { ',' }))
            {
                Response.Write(item.ToString() + "<bR/>");
            }在这里可以用 var   ,var在这里跟在js里有什么区别?
    Request.Form["Item"] 为什么可以这样取?
    为什么又Split(new char[] { ',' }?
    ,哪里来的?看来我懂的太肤浅了
      

  2.   


    还是解决不了
    id值是得到了
    但是我不能去控制checkbox是否被选中,
    若用2楼的方法,checkbox必须是不能加 runat="server"
    但是不加runat="server",我又找不到checkbox控件
    继续等
      

  3.   

    页面加载的时候,用if(!ispostback)试试或者用变量记录选中的中,刷新的时候,再赋值一下!(PS:没用过这个控件,但是这个是我的思路)
      

  4.   

    给你提供个思路吧 ,viewstate中建立集合 将选中的项的id存进去
    在checkbox中 checked=<%#IsCheck(Eval("Id"))%>
    在代码中建立IsCheck(object ob);
    在里面判断是否在viewstate这个集合里 看不懂我就不管了
      

  5.   

    if(!IspostBack)
     BindData();for (int i = 0; i < this.Repeater1.Items.Count; i++)
        {
            //取值
        } 
      

  6.   

    楼上的。我现在是找不到checkbox 控件
    如果找得到控件。早就写好了<ItemTemplate>
    <input type="checkbox"  id="ckOne" runat="server" />
    </ItemTemplate>
    for (int i = 0; i < this.repRecord.Items.Count; i++)
            {
                if ((repRecord.Items[i].FindControl("chkOne")  as  HtmlInputCheckBox).Checked)
    ……………………
               
            }
    可是这样却找不到
      

  7.   

    麻烦你在items里面用服务器控件 虽然html控件加上runat后可以在代码里进行控制但是他不是一个服务器空间类  懂不?
      

  8.   

    汗 一激动我有打错字了 
    说详细点 html控件 是不会在页面类中作为子项的 就算它加了ranat
    只有服务器控件才可以在其页面类中作为子项被find
      

  9.   

    楼上的,那我想问你,我的那种方法是不是就不行?
    如果不行何来HtmlInput……
      

  10.   

    那如果用服务器控件了,又怎么能无刷新全选checkbox
      

  11.   

    看来你的load 事件是不是和checkbox 有关?
      

  12.   

    能否把load 代码贴出来看看
      

  13.   

    估计是回发的时候重新绑定了,,,注意ispostback
    我曾经找了一下午这个问题