可以使用stateSaveParams事件和state.save() API 方法。
没有直接的方法可以将一个表的状态复制到另一个表中,您需要单独设置每个状态属性。下面的代码仅将页面长度从一个表复制到其他表$(this).DataTable().page.len(data.length)
。
您需要将example1
,example2
和替换example3
为表的 ID(currentTab
和twoWaveTab
)EvolTab
。
var table1 = $('#example1').DataTable({
"order": [[0, "desc"]],
stateSave: true
});
var table2 = $('#example2').DataTable({
"order": [[0, "desc"]],
stateSave: true
});
var table3 = $('#example3').DataTable({
"order": [[0, "desc"]],
stateSave: true
});
var is_save_in_progress = false;
var $tables = $('#example1, #example2, #example3');
$tables
.on( 'stateSaveParams.dt', function (e, settings, data){
// Save DOM element
var that = this;
// If state saving is not in progress
if(!is_save_in_progress){
is_save_in_progress = true;
// Iterate over all tables
$tables.each(function(index){
// If table is other than the initial table
if(this.id !== that.id){
// Set page length, save state and redraw the table
$(this).DataTable()
.page.len(data.length)
.state.save()
.draw(false);
}
});
// Indicate that state saving is over
is_save_in_progress = false;
}
});
请参阅此 JSFiddle进行演示。