2017-06-30 99 views
0

我有一個帶有Datatable(1.10.15)的Thymeleaf模板。我已經生成的代碼,以保持選定的行提交後,但它不工作,我不要;噸有任何JavaScript錯誤Thymeleaf:在提交後保留數據表中的選定行

<script th:inline="javascript"> 
/*<![CDATA[*/ 

$(document).ready(function() { 


    var table = $('#deviceEventTable').DataTable({ 
     order: [[ 0, "desc" ]], 
     select: true, 
     bLengthChange: false, 
     stateSave: true, 
     pageLength: 20, 
     initComplete: function() { 
      var api = this.api(); 

      if (localStorage.getItem('DataTables_selected')!=null && localStorage.getItem('DataTables_selected') != 'undefined') {   
       var selected = localStorage.getItem('DataTables_selected').split(',');      
       selected.forEach(function(s) { 
       api.row(s).select(); 
       }) 
      } 

      } 
    }); 


    table.on('select.dt deselect.dt', function() { 
      localStorage.setItem('DataTables_selected', table.rows({ selected: true }).toArray()) 
     })  
}); 

/*]]>*/ 
</script> 

我認識到,是不是提交的一個問題,當我的時鐘行不得到選擇。它被選中替換此代碼

table.on('select.dt deselect.dt', function() { 
     localStorage.setItem('DataTables_selected', table.rows({ selected: true }).toArray()) 
    }) 

這一個:

$('#deviceEventTable tbody').on('click', 'td', function() {   
     $(this).closest("tr").toggleClass('selected'); 
    }); 

但隨後在其提交自敗選定行

+0

什麼select.css和select.js的版本包括? – Elizabeth

回答

0

您可以使用一個變量和字符串覆蓋它

var selected = localStorage.getItem('DataTables_selected').split(','); 
var selected = '0'; 

剛刪除var selected = '0';其他所有東西看起來都在工作:)

UPD

您使用舊的dataTable()constructur它返回一個jQuery對象。 改變它的DataTable()constructur,它與nedded行訪問

var table = $('#deviceEventTable').DataTable({ 
     ... 
    }); 

UPD2 工作示例與您的代碼返回API對象 http://jsfiddle.net/y8sar09d/5/

+0

同樣的結果;-( –

+0

查看答案的更新 – Elizabeth