我用
while (rdr.Read())
            {
                int hw_id = (int)rdr["hw_id"];
                string jydbh = rdr["jydbh"].ToString();
                string sdz = rdr["sdz"].ToString();
                string shrxm = rdr["shrxm"].ToString();
                string sxhh = rdr["sxhh"].ToString();
                string hwmc = rdr["hwmc"].ToString();
                int jianshu = (int)rdr["jianshu"];
                string hwzt = rdr["hwzt"].ToString();
    Response.Write("<tr><td width='5%' id='hw_id'><input type='checkbox' name='ids' value='" + hw_id + "' ");
                Response.Write("</td><td id='jydbh' width='5%'>");
                Response.Write(jydbh);
                Response.Write("</td><td id='sdz' width='5%'>");
                Response.Write(sdz);
                Response.Write("</td><td id='shrxm' width='5%'>");
                Response.Write(shrxm);
                Response.Write("</td><td id='sxhh' width='5%'>");
                Response.Write(sxhh);
                Response.Write("</td><td id='hwmc' width='5%'>");
                Response.Write(hwmc);
                Response.Write("</td><td id='jianshu' width='5%'>");
                Response.Write(jianshu);
                Response.Write("</td><td id='hwzt' width='5%'>");
                Response.Write(hwzt);
                Response.Write("</td>");
                Response.Write("</tr>");
                Response.Write("</table>");
                
            }
把后台的表格输出到前台  ,在前台如何遍历(全选)checkbox????            我的全选js
<script type="text/javascript">
//////////////////////////////////////////////////////////////
var CheckedColor="#6699ff";  //设置选中状态的颜色
//设置选中状态
function SetCheck(obj, tr){
var tr = tr || event.srcElement.parentNode;
while(tr && tr.tagName.toLowerCase() != "tr"){
tr = tr.parentNode;
}
if(tr.bgColor == CheckedColor){
tr.bgColor = "#FFFFFF";
tr.getElementsByTagName("input")[0].checked = false;
}else{
tr.bgColor = CheckedColor;
tr.getElementsByTagName("input")[0].checked = true;

}
}
function selAll(obj, tbID){
var table = document.getElementById(tbID);
    
for(var i=1; i<table.rows.length; i++){
SetCheck(null, table.rows[i]);
}
}
</script>
但是无论检索到几行只能选中第一行 ?? ??????

解决方案 »

  1.   


    name='ids' 
    document.getElementsByName('ids') 即可
      

  2.   

    1. 后台输出的CheckBox时候给个名字,然后把 CheckBox names list 传给前台(这种办法最简单)
    2. 检查 tagname,和你现在用的办法一样(这个比较麻烦),“Response.Write(" </table>");”这个输出怪怪的
      

  3.   

     Response.Write(" <tr> <td width='5%' id='hw_id'> <input type='checkbox' name='ids' value='" + hw_id + "' "); 
    这个是后台test.aspx.cs文件 
    下面是前台1.aspx文件 怎么获取ids
    function selAll(obj, tbID){ 
    var table = document.getElementById(tbID); 
        
    for(var i=1; i <table.rows.length; i++){ 
    SetCheck(null, table.rows[i]); 


      

  4.   

    楼主,除了那个 <table> 是问题的原因之外,for(var i = 1; i < table.rows.length; i++) 这个地方也不对吧,你第一个 checkbox 不选择吗?(那个 checkbox 是在 header 里面的?)
      

  5.   

    楼主,不要绕弯子浪费时间了,你把那个 Response.Write(" </table>"); 去掉,你再看看结果
      

  6.   

    也是不行啊我的1.aspx代码
    <script type="text/javascript">
    //////////////////////////////////////////////////////////////
    var CheckedColor="#6699ff";  //设置选中状态的颜色
    //设置选中状态
    function SetCheck(obj, tr){
    var tr = tr || event.srcElement.parentNode;
    while(tr && tr.tagName.toLowerCase() != "tr"){
    tr = tr.parentNode;
    }
    if(tr.bgColor == CheckedColor){
    tr.bgColor = "#FFFFFF";
    tr.getElementsByTagName("input")[0].checked = false;
    }else{
    tr.bgColor = CheckedColor;
    tr.getElementsByTagName("input")[0].checked = true;

    }
    }
    function getData(page)

     var xh = new ActiveXObject("Microsoft.XMLHTTP") 
     var search=document.getElementById("search").value;
     var url = "test.aspx?search="+escape(search)+"&jydbh="+escape(document.getElementById('jydbh').value)+"&t="+new Date().getTime();
     xh.open("get",url,false); 
     xh.send(); 
     if(xh.readyState == 4 && xh.status == 200) 
     { 
      document.getElementById("tip").innerHTML= xh.responseText; 
      
     } 
    } function selAll(obj, tbID){
    var table = document.getElementById(tbID);
        alert(table.rows.length);
    for(var i=1; i<table.rows.length; i++){
    SetCheck(null, table.rows[i]);
    }
    }
    </script>
    <body>
    <form id="form1" runat="server">
      送达站:
        <input type="text" id="search" name="search" size="15">交易单号:<input name="jydbh" type="text" id="jydbh" size="17" >
      <input type="button" value="查询" onClick="getData(1)"></form>
    <table width="100%" cellpadding="0" cellspacing="0"  style="border:0px">  
        <tr>
            <td width="411" valign="top">
        <div style="width:100%; height:346px; overflow-x:hidden;overflow-y:scroll" id="tip">   
          <table id="tb1" width="100%"  class="tb" border="0" cellpadding="0" cellspacing="0"  onClick="SetCheck(this)"  >
             <tr>
                     </tr>
                  </table>
        </div>
        <input type="checkbox" id="chk_all1" name="chk_all1" value="checkbox" onClick="selAll(this, 'tb1');"/>全选/反选
    </td>
    </tr>
    </table>后台test.aspx.cs文件 while (rdr.Read())
                {
                    int hw_id = (int)rdr["hw_id"];
                    string jydbh = rdr["jydbh"].ToString();
                    string sdz = rdr["sdz"].ToString();
                    string shrxm = rdr["shrxm"].ToString();
                    string sxhh = rdr["sxhh"].ToString();
                    string hwmc = rdr["hwmc"].ToString();
                    int jianshu = (int)rdr["jianshu"];
                    string hwzt = rdr["hwzt"].ToString();                Response.Write("<table id='tb1' border='0' cellpadding='0' cellspacing='0' class='tb'onclick='SetCheck(this)'><tr class='tbhead'></tr>");
                    Response.Write("<tr><td width='5%' id='hw_id'><input type='checkbox' name='ids' value='" + hw_id + "' ");
                    Response.Write("</td><td id='jydbh' width='5%'>");
                    Response.Write(jydbh);
                    Response.Write("</td><td id='sdz' width='5%'>");
                    Response.Write(sdz);
                    Response.Write("</td><td id='shrxm' width='5%'>");
                    Response.Write(shrxm);
                    Response.Write("</td><td id='sxhh' width='5%'>");
                    Response.Write(sxhh);
                    Response.Write("</td><td id='hwmc' width='5%'>");
                    Response.Write(hwmc);
                    Response.Write("</td><td id='jianshu' width='5%'>");
                    Response.Write(jianshu);
                    Response.Write("</td><td id='hwzt' width='5%'>");
                    Response.Write(hwzt);
                    Response.Write("</td>");
                    Response.Write("</tr>");
                    //Response.Write("</table>");
    </body>
      

  7.   

    刚才没有“Response.Write(" <table id='tb1' border='0' cellpadding='0' cellspacing='0' class='tb'onclick='SetCheck(this)'> <tr class='tbhead'> </tr>"); 
    ”这句话阿,有这个的话是要有Response.Write(" </table>"); 的,但是为啥你的table 的id 都是一样的呢?
      

  8.   


    是为了对应前台1.aspx中的
    <div style="width:100%; height:346px; overflow-x:hidden;overflow-y:scroll" id="tip">   
          <table id="tb1" width="100%"  class="tb" border="0" cellpadding="0" cellspacing="0"  onClick="SetCheck(this)"  > 
            <tr> 
                    </tr> 
                  </table> 
        </div> 
    因为“Response.Write(" <table id='tb1' border='0' cellpadding='0' cellspacing='0' class='tb'onclick='SetCheck(this)'> <tr class='tbhead'> </tr></table>"); 
    这个表格是输出到tip中的document.getElementById("tip").innerHTML= xh.responseText; 
    应该是没错的啊
      

  9.   


    在asp文件中
    for i=1 to rs.pagesize  rs是asp的记录集
    他用变量i来循环 直到记录集的末尾 循环输出了str=str&"<tr><td id=""id""><input type=""checkbox""  value="&rs("id")&" name='ids'></td><td id=""title"" align=center>"&rs("title")&"</td><td id=""tj"">"&rs("tj")&"</td></tr>"而在循环前用
    str="<table id=""tb1"" width=""200"" class=""tb"" cellpadding=""0"" cellspacing=""0"" onclick=""SetCheck(this)""><tr class=""tbhead""><td>ID</td><td>用户名</td><td>件数</tr>"  所以他选择的时候不用选中第一行 i从1开始
    for(var i=1; i<table.rows.length; i++){
    SetCheck(null, table.rows[i]);
    }现在的问题是  我如何像在asp中那样赋予一个i变量来循环输出表格?
      

  10.   

    谁给个qq  我把asp下的代码发给他 看看
      

  11.   


    这个是新的问题吗?呵呵,首先 DataGrid 有自动分页的功能,如果不适用,那么要想知道你希望表格在前台生成还是在后台生成了?在前台的话,用JS就可以搞定,在后台的话,如果你不喜欢 DataGrid 还可以用 Repeater 甚至用 Literal 来生成
      

  12.   

    楼上的兄弟啊  帮帮忙吧  我没用DataGrid 只是用
    Response.Write(" <table id='tb1' border='0' cellpadding='0' cellspacing='0' class='tb'onclick='SetCheck(this)'> <tr class='tbhead'> </tr>"); 
                    Response.Write(" <tr> <td width='5%' id='hw_id'> <input type='checkbox' name='ids' value='" + hw_id + "' "); 把表格输出到前台的div下的tb1<div style="width:100%; height:346px; overflow-x:hidden;overflow-y:scroll" id="tip">   
          <table id="tb1" width="100%"  class="tb" border="0" cellpadding="0" cellspacing="0"  onClick="SetCheck(this)"  > 
            <tr> 
                    </tr> 
                  </table> 
        </div> 然后要怎么全选 ????????
      

  13.   

    我想应该是while(rdr.read()){}如何改成像在asp下面的
    for i=1 to rs.pagesize
      

  14.   

    document.getElementsByName()
    将这一类型的所有控件读取并存放在一个数组中,分别判断控件的ID
      

  15.   

    function SetCheck(obj, tr,i){ 
    var tr = tr || event.srcElement.parentNode; 
    while(tr && tr.tagName.toLowerCase() != "tr"){ 
    tr = tr.parentNode; 

    if(tr.bgColor == CheckedColor){ 
    tr.bgColor = "#FFFFFF"; 
    tr.getElementsByTagName("input")[i].checked = false; 
    }else{ 
    tr.bgColor = CheckedColor; 
    tr.getElementsByTagName("input")[i].checked = true; } 

    function selAll(obj, tbID){ 
    var table = document.getElementById(tbID); 
        
    for(var i=1; i <table.rows.length; i++){ 
    SetCheck(null, table.rows[i],i-1); 


    试试