2011-03-28 28 views
0

我想改变基于日期范围的jQuery数据表的背景颜色....我试图用$ .fn.afnFiltering.push(.. 。)做日期范围过滤...但无法弄清楚如何改变过滤行的颜色....基于日期范围过滤更改jQuery数据表行的css

继承人我用来做过滤的代码...我测试了这个和日期范围过滤功能...

 //row filtering by date 
$.fn.dataTableExt.afnFiltering.push(
function (oSettings, aData, iDataIndex) { 
    var iFini = document.getElementById('dateStart').value; 
    var iFfin = document.getElementById('dateEnd').value; 
    if (iFini == "" && iFfin == "") { 
     return true; 
    } 
    else if (iFini != "" && iFfin == "") { 
     return true; 
    } 
    else if (iFini == "" && iFfin != "") { 
     return true; 
    } 
    else if (iFini != "" && iFfin != "") { 
     var sdate = new Date(); 
     var edate = new Date(); 
     var initialdt = iFini.split("/"); 
     var enddt = iFfin.split("/"); 
     var filterdt1 = aData[3].split(" "); 
     var filterdt = filterdt1[0].split("/"); 
     var msg = ""; 
     if ((Number.parseInvariant(filterdt[0]) + 1 >= Number.parseInvariant(initialdt[0]) + 1 && Number.parseInvariant(filterdt[0]) + 1 <= Number.parseInvariant(enddt[0]) + 1) && (Number.parseInvariant(filterdt[1]) >= Number.parseInvariant(initialdt[1]) && Number.parseInvariant(filterdt[1]) <= Number.parseInvariant(enddt[1])) && (Number.parseInvariant(filterdt[2]) >= Number.parseInvariant(initialdt[2]) && Number.parseInvariant(filterdt[2]) <= Number.parseInvariant(enddt[2]))) { 
      // msg = "initialdt: " + initialdt[0] + "/" + initialdt[1] + "/" + initialdt[2] + "====" + "enddt: " + enddt[0] + "/" + enddt[1] + "/" + enddt[2] + "====Filter:" + filterdt[0] + "/" + filterdt[1] + "/" + filterdt[2] + "/n"; 

       //need to change the style here...not sure how to address   
       //the individual row 

      return true; 
     } 
    } 

    return true; 
} 
); 

我也结合下面的fnDraw功能...

$("#dateStart").keyup(function() { $dTable.fnDraw(); }); 
$("#dateStart").change(function() { $dTable.fnDraw(); }); 
$("#dateEnd").keyup(function() { $dTable.fnDraw(); }); 
$("#dateEnd").change(function() { $dTable.fnDraw(); }); 

回答

1

您可以使用iDataIndex和fnGetNodes获取tr元素。

var tr = oTable.fnGetNodes(iDataIndex);
$(tr).css('background-color', '#F00');

oTable必须包含DataTable对象。

var oTable = $("#myTable").dataTable({ ... });

+0

OK,这样的工作...部分....现在我有另外一个问题......仅在第一页的条目得到强调....如果我浏览的所有页面,然后排序任何列其余的匹配条目得到高亮....什么给? – 2011-04-01 10:46:30

+0

查看这个简单的例子:[http://jsfiddle.net/codigoespagueti/AHswU/1/](http://jsfiddle.net/codigoespagueti/AHswU/1/)。你的代码有什么不同吗? – 2011-04-01 19:19:17