2016-02-07 60 views
2

我嘗試在我的表中查找字符串並將類添加到此行。但是這個代碼不起作用。沒有任何反應。這裏是我的代碼,後者我打電話myTable()功能:Datatables查找字符串並添加類

function myTable() { 
    var selectDateVar = $('#selectDate').val(); 

     var table = $('#example').DataTable({ // Таблица 
      "processing": true, 
      "serverSide": true, 
      "deferRender": true, 
      "bDestroy": true, 

      "sAjaxSource": "server_processing.php?data=30/09/2015", 
      "order": [[ 2, "desc" ]], 
      initComplete: function(){ 
       var api = this.api(); 

       new $.fn.dataTable.Buttons(api, { 
        buttons: [ 
         { 
         extend: 'print', 
         text: 'Принтиране', 
         'className': 'btn-lg btn btn-warning printBTN', 
         }, 
        ] 
       }); 

       api.buttons().container().appendTo('.printButton'); 
      } 

     }); 

     var indexes = table.rows().eq(0).filter(function (rowIdx) { 
      return table.cell(rowIdx, 3).data() === '180' ? true : false; 
     }); 
     table.rows(indexes).nodes().to$().addClass('highlight'); 
    } 

我的表:

enter image description here

我用這個例子https://datatables.net/reference/type/row-selector

+0

@Spirit是的,我敢肯定。 – diank

回答

2
function myTable() { 
    var selectDateVar = $('#selectDate').val(); 

    var table = $('#example').DataTable({ // Таблица 
     "processing": true, 
     "serverSide": true, 
     "deferRender": true, 
     "bDestroy": true, 

     "sAjaxSource": "server_processing.php?data=30/09/2015", 
     "order": [[ 2, "desc" ]], 
     initComplete: function(){ 
      var api = this.api(); 
      new $.fn.dataTable.Buttons(api, { 
       buttons: [ 
        { 
        extend: 'print', 
        text: 'Принтиране', 
        'className': 'btn-lg btn btn-warning printBTN', 
        }, 
       ] 
      }); 

      api.buttons().container().appendTo('.printButton'); 

      //filtering code should be inside of initComplete function 
      //but in your case an empty table is filtered 
      var indexes = table.rows().eq(0).filter(function (rowIdx) { 
       return table.cell(rowIdx, 3).data() === '180' ? true : false; 
      }); 

      table.rows(indexes).nodes().to$().addClass('highlight'); 
     } 

    }); 
} 

你需要調用數據的代碼加載。目前您在表格填充服務器數據之前調用它。只需將您的代碼示例添加到initComplete函數。 initComplete將在加載Ajax數據之後調用。

回答第二個問題:如果需要跨多個列搜索只需添加以下代碼:

var indexes = table.rows().eq(0).filter(function (rowIdx) { 
    return table.cell(rowIdx, 3).data() === '180' && 
      table.cell(rowIdx, 0).data() === '521' ? true : false; 
}); 
+0

看到我的評論,這是我的代碼。 – diank

+0

是的工作就像一個魅力,但如果我使用搜索,分頁,排序,刷新表類剛剛走了。有沒有解決這個問題? – diank

+2

@diank - 您可以在[** drawCallback **](https://datatables.net/reference/option/drawCallback)中執行代碼,以便每次重繪表格時添加該類。 – davidkonrad