2017-01-15 48 views
-2

我有jquery數據表並希望根據單元格內容設置樣式屬性(顏色和背景顏色)。 表非常動態地更改,所以每次更改單元格內容時我都無法重新繪製整個表格。JQuery datatable根據內容更改單元格樣式而不重繪整個表

有沒有辦法做到這一點?

我考慮過使用column rendering,每調用一次單元就可以控制數據顯示,但我不確定這是最好的方法。另外渲染回調獲取單元格數據而不是td。

謝謝!

當從rowDrawCallback調用我用:

"fnRowCallback": function (nRow, aData, iDisplayIndex, iDisplayIndexFull) { 

     if (!aData || aData.length == 0) return; 

     if(columns.indexOf(INDEX_STAT) >= 0) { 
      var state = aData[INDEX_STAT].state; 
      var exitCode = aData[INDEX_STAT].exitCode; 
      var statIndex = columns.indexOf(INDEX_STAT); 
      var statSelector = $('td', nRow).eq(statIndex); 

      if (!state) 
       log("undef state"); 

      ResultsModule.updateStatusCellInfo(statSelector, state, exitCode); 
     } 
} 



var ResultsModule = { 
updateStatusCellInfo: function(selector, state, exitCode){   
    var mapper = ResultsModule.getTestResults(state, exitCode).map; 

    var currentStatusString = mapper.status; 
    var currentStatusColor = mapper.color; 
    var currentStatusBgColor = mapper.bgcolor; 

    if (currentStatusString) selector.text(currentStatusString); // updating status as text 
    else selector.text(Status.None); 
    if (currentStatusColor) selector.css('color',currentStatusColor); // seting status color from mapper 
    if (currentStatusBgColor) selector.css('background-color',currentStatusBgColor); // seting status color from mapper 
} 
} 
+0

CSS中的任何更改都是重繪。 – zer00ne

+0

的確,但我想避免重新繪製WHOLE表,並重新繪製特定的單元\ raw只。尋找一種方法來做到這一點。 –

+0

您需要提供[mcve],因爲每種情況都有特定的問題,需要考慮的情況過多。這是發佈問題必須承擔的責任。 – zer00ne

回答

0

我用這個column.render,即呼籲細胞是drawed之前。 也許它不是功能的目標,但它的工作:)。

var cell = meta.settings.aoData[meta.row].anCells[meta.col]; 
var statSelector = $(cell); 
selector.css('color', ""); 
selector.css('background-color',""); 

看到this discussion的詳細信息,從渲染功能越來越DOM細胞:

獲得TD可以這樣做。

相關問題