使用 draw()、ajax、分页刷新数据表
Datatables refresh with draw(), ajax, pagination
我正在尝试每隔几秒使用来自服务器的数据刷新我的 table。它正在加载新数据,但分页根本不起作用。我的意思是,这是一个大数据列表。它还说 Showing 0 to 0 of 0 entries (filtered from NaN total entries)
用于 table.
底部的分页
我在setInterval
函数中使用draw(false)来实现刷新。我想在不使用 "serverSide":"true"
的情况下执行此操作,但我发现 draw()
不会调用 ajax
url 除非我使用 serverSide
选项。
function myFunction() {
var table1 = $("#example1").dataTable({
"ajax": '/api/GetData',
"serverSide": "true",
"columns": [
{
"data": "DateCreated",
},
{ "data": "UserName" }
],
"destroy": true
});
setInterval(function test() {
table1.draw(false);
}, 3000);
}
当我省略 "serverSide":"true"
时,table 会正确绘制分页,但 ajax 不会被 draw()
调用。如何获取 ajax 数据并正确设置分页?
确保您的 AJAX 函数正在返回:sEcho、iTotalRecords、iTotalDisplayRecords 和 iDisplayLength。
另外,调用dataTable函数时在客户端设置"iDisplayLength":500
您可以在 https://datatables.net/forums/discussion/512/clarification-of-itotalrecords-and-itotaldisplayrecords
上阅读有关这些参数的更多信息
使用ajax.reload()从Ajax数据源重新加载table数据,使用false
作为第二个参数,以避免重置当前分页位置。
table1.api().ajax.reload(null, false);
由于您的 table 是使用 dataTable()
初始化的,因此可以使用 table1.api()
方法访问 API 方法。否则,如果使用 DataTable()
初始化 table,则可以直接使用 table1
访问 API 方法。有关详细信息,请参阅 DataTables API。
我正在尝试每隔几秒使用来自服务器的数据刷新我的 table。它正在加载新数据,但分页根本不起作用。我的意思是,这是一个大数据列表。它还说 Showing 0 to 0 of 0 entries (filtered from NaN total entries)
用于 table.
我在setInterval
函数中使用draw(false)来实现刷新。我想在不使用 "serverSide":"true"
的情况下执行此操作,但我发现 draw()
不会调用 ajax
url 除非我使用 serverSide
选项。
function myFunction() {
var table1 = $("#example1").dataTable({
"ajax": '/api/GetData',
"serverSide": "true",
"columns": [
{
"data": "DateCreated",
},
{ "data": "UserName" }
],
"destroy": true
});
setInterval(function test() {
table1.draw(false);
}, 3000);
}
当我省略 "serverSide":"true"
时,table 会正确绘制分页,但 ajax 不会被 draw()
调用。如何获取 ajax 数据并正确设置分页?
确保您的 AJAX 函数正在返回:sEcho、iTotalRecords、iTotalDisplayRecords 和 iDisplayLength。
另外,调用dataTable函数时在客户端设置"iDisplayLength":500
您可以在 https://datatables.net/forums/discussion/512/clarification-of-itotalrecords-and-itotaldisplayrecords
上阅读有关这些参数的更多信息使用ajax.reload()从Ajax数据源重新加载table数据,使用false
作为第二个参数,以避免重置当前分页位置。
table1.api().ajax.reload(null, false);
由于您的 table 是使用 dataTable()
初始化的,因此可以使用 table1.api()
方法访问 API 方法。否则,如果使用 DataTable()
初始化 table,则可以直接使用 table1
访问 API 方法。有关详细信息,请参阅 DataTables API。