2017-06-22 96 views
1

我有一个DataTable(15年1月10日)Datatables。保持选定的行提交后

<script th:inline="javascript"> 

$(document).ready(function() { 
    $('#deviceEventTable').dataTable({ 
     "order": [[ 0, "desc" ]], 
     "bLengthChange": false, 
     "bStateSave": true, 
     "pageLength": 20, 
    }); 

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

}); 

</script> 

一个Thymeleaf模板我也有这个表中定义

<tr th:each="deviceEvent : ${deviceEvents}" onclick="javascript:document.getElementById('deviceEventFormId').submit();" > 

将有可能保持他选择行提交后?

+1

可以创建一个隐藏的输入来存储行?从代码提交该行到隐藏的输入...也许?只是想出来的框。 –

回答

1

为什么不使用select的扩展?使跟踪选定行变得更容易。然后,你可以存储行每次选择的选择或取消选择由:

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

使用initComplete回调还原选定状态时,表被初始化:

var table = $('#example').DataTable({ 
    select: true, 
    stateSave: true, 
    initComplete: function() { 
    var api = this.api(); 
    var selected = localStorage.getItem('DataTables_selected').split(','); 
    selected.forEach(function(s) { 
     api.row(s).select(); 
    }) 
    } 
}) 

演示 - >http://jsfiddle.net/jrjfhjf9/

尽量选择一些行,然后单击运行(重新加载)或URL复制到另一个浏览器选项卡。