datatables rowcallback、colvis和statesave

datatables rowcallback、colvis和statesave,datatables,Datatables,我使用带有statesave的datatables、colvis按钮来选择列的可见性,并使用rowcallback在数据上添加一些颜色 这是我的密码: activitiesTable = $('#activitiesTable').DataTable({ scrollX: true, serverSide: true, processing: true, stateSave: true, ... buttons: [ {

我使用带有statesave的datatables、colvis按钮来选择列的可见性,并使用rowcallback在数据上添加一些颜色

这是我的密码:

activitiesTable = $('#activitiesTable').DataTable({
      scrollX: true,
      serverSide: true,
      processing: true,
      stateSave: true,
...
buttons: [
        {
          extend: "colvis",
          className: "btn-sm",
          columns: [ 1, 3, 4, 6, 7, 8, 9, 10, 12, 14, 16,18,20,22,24,26,28,30,32 ]
        },
...
rowCallback: function(row, data, index){
        if(data.jan_com<= 0){
          $(row).find('td:eq(4)').addClass('zero');
        }
        else if(data.jan_otl> 0){
          $(row).find('td:eq(4)').addClass('otl');
        }
        else {
          $(row).find('td:eq(4)').addClass('forecast');
        }
        if(data.feb_com<= 0){
          $(row).find('td:eq(5)').addClass('zero');
        }
        else if(data.feb_otl> 0){
          $(row).find('td:eq(5)').addClass('otl');
        }
        else {
          $(row).find('td:eq(5)').addClass('forecast');
        }
...
activitiesTable=$(“#activitiesTable”).DataTable({
是的,
服务器端:是的,
处理:对,
stateSave:没错,
...
按钮:[
{
扩展:“科尔维斯”,
类名:“btn sm”,
列:[1,3,4,6,7,8,9,10,12,14,16,18,20,22,24,26,28,30,32]
},
...
rowCallback:函数(行、数据、索引){
如果(data.jan_com 0){
$(行).find('td:eq(4)').addClass('otl');
}
否则{
$(行).find('td:eq(4)').addClass('forecast');
}
如果(data.feb_com 0){
$(行).find('td:eq(5)').addClass('otl');
}
否则{
$(行).find('td:eq(5)').addClass('forecast');
}
...
如您所见,我使用类zero、forecast或otl更改了数据的颜色

问题是,因为它更改了显示的列,所以下次我重新加载时,颜色会应用到错误的列,因为列4不再是jan_com列

有没有办法找到jan_com列对应的td,而不是询问td:eq(4)


谢谢。

您是否尝试过columnDefs中的className选项?如果您添加了一个特殊的类,该类将与columnDefs一起移动非常聪明,谢谢它解决了我的问题。。。