我正在使用ajax更新我的表,该进程与数据表无关,我想执行表刷新
$('#listing').dataTable( {
"bDestroy": true,
"bProcessing": true,
"sAjaxSource": "getlist/",
"bJQueryUI": true,
"aoColumns": [
{ "mDataProp": "id" },
{ "mDataProp": "aname" },
{ "mDataProp": "acode" },
{ "mDataProp": "editlink" },
{ "mDataProp": "deletelink" },
],
"aoColumnDefs": [
{ "bSearchable": false, "bVisible": false, "aTargets": [ 0 ] }
]
} );
我的数据会自定义显示为{"aaData":[{"id":"14",
,并且因为正在呈现表格,所以数据效果很好。
答案 0 :(得分:0)
您可以通过调用fnDraw()
方法更新数据表。但是,如果设置了 bServerSide: true
,那么Datatables将再次从实际数据源(在您的情况下为Ajax URI) ONLY 中读取数据(您正在告诉它)所有处理都在服务器端完成的数据表。)
bServerSide: true
的一个副作用是你需要发送分页细节(iTotalRecords& iTotalDisplayRecords,..)& Ajax响应中的其他数据(请参阅Server-side Processing docs)。
其他副作用是过滤不再起作用:(数据表不能过滤它所拥有的部分数据。
答案 1 :(得分:0)
DataTables在API中有一个fnReloadAjax函数,您可以将其粘贴到脚本中:fnReloadAjax。而且您无需为此启用服务器端处理。
但请注意:如果您计划合并重复刷新(即表每10秒刷新一次以显示“实时”数据),最好的方法是定期识别来自AJAX源的修改数据(也许通过比较记录中的“已修改”时间戳)并使用fnAddData添加/更新/删除这些行。对于客户端而言,这比每次重新加载整个数据集要便宜。