在动态生成表格时,通过列的值去控制某行的颜色,比如对于当前记录,如果该值为1,那么该行就为红色;
如果该值为2,那么改行就显示为绿色,等等。
但执行的效果是,最后一行没有颜色,而且所有的行的颜色都向上错了一行。
感觉是表头占了一行似的。
比如:
表头
行 1 红色
行 1 红色
行 2 绿色
行 2 绿色
行(最后一行) 2 没有颜色了最后一行应该显示为绿色才对啊。

解决方案 »

  1.   

    <script type="text/javascript">
        window.setInterval("reload()",100);
        function reload() {
            DataList.GridViewSource(callback);
        }
        function callback(r) {
            var rows = r.value.Rows, tb = document.getElementById('gv1'),tr,td;
            while (tb.rows.length > 1) tb.deleteRow(1); //删除除了页头的行
            //alert(rows.length);
            for (var i = 0; i < rows.length; i++) {
               if(parseInt(rows[i].Type)==1)
               {
                tb.rows[i].bgColor="FFFFCC";
               }
               else if(parseInt(rows[i].Type)==2)
               {
                tb.rows[i].bgColor="9999FF";
               }
                tr = tb.insertRow(tb.rows.length);           
                td = tr.insertCell(0); td.innerHTML = rows[i].RecTime;
                td = tr.insertCell(1); td.innerHTML = rows[i].SrceID;
                td = tr.insertCell(2); td.innerHTML = rows[i].DestID;
                td = tr.insertCell(3); td.innerHTML = rows[i].Type;
            }
        }
    </script>
      

  2.   

    while (tb.rows.length > 1) tb.deleteRow(1); //删除除了页头的行不知道你这一行的意思
     如果行大于2行,则删除第2行,并且一直删到只有2行?
      

  3.   

    tr = tb.insertRow(tb.rows.length);   你最后插入一行。并没有设置它的颜色!
    自己调试一下!  for (var i = 0; i < rows.length; i++) {
    tr = tb.insertRow(tb.rows.length);  
      td = tr.insertCell(0); td.innerHTML = rows[i].RecTime;
      td = tr.insertCell(1); td.innerHTML = rows[i].SrceID;
      td = tr.insertCell(2); td.innerHTML = rows[i].DestID;
      td = tr.insertCell(3); td.innerHTML = rows[i].Type;  if(parseInt(rows[i].Type)==1)
      {
      tb.rows[i].bgColor="FFFFCC";
      }
      else if(parseInt(rows[i].Type)==2)
      {
      tb.rows[i].bgColor="9999FF";
      }
      
      }
      

  4.   

    for (var i = 0; i < rows.length; i++) {
    tr = tb.insertRow(tb.rows.length);  
      td = tr.insertCell(0); td.innerHTML = rows[i].RecTime;
      td = tr.insertCell(1); td.innerHTML = rows[i].SrceID;
      td = tr.insertCell(2); td.innerHTML = rows[i].DestID;
      td = tr.insertCell(3); td.innerHTML = rows[i].Type;  if(parseInt(rows[i].Type)==1)
      {
      tr.bgColor="FFFFCC";
      }
      else if(parseInt(rows[i].Type)==2)
      {
      tr.bgColor="9999FF";
      }
      
      }
      

  5.   

    for (var i = 0; i < rows.length; i++) {
    tr = tb.insertRow(i);   
      td = tr.insertCell(0); td.innerHTML = rows[i].RecTime;
      td = tr.insertCell(1); td.innerHTML = rows[i].SrceID;
      td = tr.insertCell(2); td.innerHTML = rows[i].DestID;
      td = tr.insertCell(3); td.innerHTML = rows[i].Type;  if(parseInt(rows[i].Type)==1)
      {
      tr.bgColor="FFFFCC";
      }
      else if(parseInt(rows[i].Type)==2)
      {
      tr.bgColor="9999FF";
      }
       
      }
    竟然都没有颜色了。
    tb.insertRow(i)表示在i处插入一行吧。
      

  6.   

    while (tb.rows.length > 1) tb.deleteRow(1);
    应该是tb.deleteRow(0)吧,这个才是删除表头吧
      

  7.   

    tr = tb.insertRow(tb.rows.length);   tr = tb.insertRow(i); 有问题。应该是tr = tb.insertRow(i+1)才对,错开头。