【发布时间】:2017-11-27 17:06:56
【问题描述】:
我终于让我的数据表每隔一段时间重新加载。但是我现在注意到的是,如果您向右滚动,表格重新加载会将滚动重置回左侧。如果你向下滚动,它会重新回到顶部。
我需要阻止这种情况发生。
我已经尝试了这篇文章的所有答案:How to maintain jQuery DataTables scroll position after .draw()
似乎没有任何效果。也许我错过了一些东西。
我在这篇文章中注意到,问题是使用 datatables.scroller.min.js:DataTables save state scroll position
这让我想到了这个:https://cdn.datatables.net/scroller/1.4.2/
但是那里有很多 CSS 文件。我不确定应该使用哪一个,如果有的话。
也许我不需要上面的任何东西,我只需要调整下面的代码以防止滚动重置发生:
点击事件:
$('.searchSubmit').on('click', function() {
updateDataTable();
var idle = 0;
var idleInterval = setInterval(timer, 5000);
$(this).mousemove(function(e){idle = 0;});
$(this).keypress(function(e){idle = 0;});
function timer()
{
idle = idle + 1;
if(idle > 2)
{
updateDataTable();
console.log('table reloaded');
}
}
});
数据表:
function updateDataTable() {
$.ajax({
url: 'api/railmbs.php',
type: 'POST',
data: data,
dataType: 'html',
success: function(data, textStatus, jqXHR)
{
var jsonObject = $.parseJSON(data);
var table = $('#example1').DataTable({
"data": jsonObject,
"columns": [
{ "data": "BILL" },
{ "data": "CONTAINER" },
// few more columns
],
"iDisplayLength": 25,
"paging": true,
"scrollY": 550,
"scrollX": true,
"bDestroy": true,
"stateSave": true,
"autoWidth": true
});
},
error: function(jqHHR, textStatus, errorThrown)
{
console.log('fail');
}
});
}
【问题讨论】:
-
是不是更容易使用
DataTable().ajax.reload()?它会做你目前正在做的事情,如果你设置reload(null, false)它不会重置位置 -
我最初使用的是您所指的方法,但我无法使重新加载正常工作。但是,如果您不介意提供示例,我至少会尝试一下。
-
@JohnBeasley "但我无法让重新加载正常工作。",因为你没有注意答案和 cmets。
-
@davidkonrad - 关于 DataTable().ajax.reload(),也许你可以帮我回答我以前的帖子。我使用的是建议的方法,但收到了此处发布的错误:stackoverflow.com/questions/47418005/… - 如果您愿意,请赐教。
标签: javascript jquery ajax datatables