数据表页面更改回调

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 ... 
    );

【讨论】:

以上是关于数据表页面更改回调的主要内容,如果未能解决你的问题,请参考以下文章

Rails 数据更改回调

成功和数据更改后的回调

具有数据更改通知回调的 NoSQL 嵌入式数据库

颤动中从孩子到父母的回调

数据表 - 回调后保留选定的页码

无法使用回调方法更改 ASPxFileManager 控件的 RootFolder