数据表页面更改回调
Posted
技术标签:
【中文标题】数据表页面更改回调【英文标题】:Datatables page change callback 【发布时间】:2012-03-21 03:51:14 【问题描述】:我正在使用函数“fnDrawCallback”进行页面更改。它基本上解决了我的目的。唯一的事情是我必须在初始化 dataTable 对象时指定该函数。初始化后有什么办法可以做到吗?
例如: 我是这样做的:
$("#tableID").dataTables('fnDrawCallBack':functionName);
我想这样做:
var oTable = $("#tableID").dataTables();
oTable.fnDrawCallback = functionName; // or something like this
解决方案:
oTable.aoDrawCallback.push(functionObj);
var functionObj =
fn: funtionName
;
【问题讨论】:
我想知道有没有办法在初始化dataTable对象后指定该函数。 初始化后可以指定AJAX pageLoad事件吗?? ***.com/questions/7407111/… 【参考方案1】:您可以访问 DataTables 的内部数据设置来操作绘图回调数组(内部是 aoDrawCallback,而不是 fnDrawCallback - 它是一个数组,因为可以有多个回调),或者(我建议)您可以添加一个 'draw ' 事件监听器:
var oTable = $("#tableID").dataTables();
$(oTable).bind( 'draw', functionName );
DataTables 触发的事件记录在这里:http://datatables.net/docs/DataTables/1.9.0/#summary_events
【讨论】:
绑定事件在我使用的 dataTables 版本中不起作用。不过谢谢你的好建议。 aoDrawCallback 为我工作。我必须在该数组中推送一个对象,并且您的函数应该是该函数的 fn 属性。 绑定事件 $(oTable).bind() 似乎确实适用于较新的版本 1.9.2+。 这是错误的,你想绑定到'page'而不是'draw'。有关当前 (1.9.4) 版本的工作内容,请参阅下面的答案。 @RyanWilliams。每次重绘网格时都会触发draw,而不仅仅是在分页事件上。很多其他的东西都会触发绘制,所以在那里挂钩一个函数不符合 OP 的要求。【参考方案2】:如果您的版本高于 1.8,您可以使用它来触发页面更改事件:
$('#myTable').on('page', function () ... );
希望这会有所帮助!
【讨论】:
就我而言,我使用了“page.dt”,但由于某种原因,这只适用于我的第三页。【参考方案3】:你可能看过这个 http://datatables.net/forums/discussion/2737/addchange-callback-after-initialization-or-else-clone-settings-to-re-build-table/p1
【讨论】:
这似乎对人们有用,但他们在以后的版本中添加了“bRetrieve”。我有 1.6.2 版本,他们没有 bRetrieve。【参考方案4】:而不是两个单独的调用,只需在 .dataTable() 之前添加一个 .bind(),例如以下在页面更改时运行 setMouseDown 函数(包括渲染第一页):
$('#myTable')
.bind('page', setMouseDown())
.dataTable(
bJQueryUI: true,
... Other Init Stuff Here ...
);
【讨论】:
以上是关于数据表页面更改回调的主要内容,如果未能解决你的问题,请参考以下文章