【发布时间】:2016-05-12 12:34:24
【问题描述】:
我有一个使用 HTML 文件中的静态数据的数据表。
使用“columnDefs 数据”函数或“columnDefs 渲染”函数,我可以执行一些输出调整——根据它们的内容以及它们在当前显示页面上的位置来消隐一些 TD(不改变数据源)。
但是,当用户更改显示的行数时,我需要重置并重新对数据进行调整,因为不同的单元格现在需要空白,而之前空白的条目可能需要再次显示。
所以,我想做的是在“length.dt”事件(显示行数刚刚改变)中,调用 something 导致 Datatable 重新渲染整个表格,或重新加载整个数据(从而调用我的 columnDefs 渲染或 columnDefs 数据函数)
这可能吗?还是我的方法有缺陷,我需要另辟蹊径?
【问题讨论】:
-
澄清:您加载一些数据,并使用渲染修改输出。您现在希望能够将数据“重置”到预渲染(即未修改)状态吗?对吗?
-
没错。当可见行数改变时重置,这样我就可以从头开始修改输出。
-
使用
render在渲染点修改数据,因此得名。您可以做几件事 - 在render中有一个条件,它在一种情况下修改输出,在另一种情况下显示未修改的数据。或者查看“fnRowCallback”,您可以在呈现行后使用它来修改数据。同样,必须有一个条件语句来确定要显示的内容。或者在表格渲染完成后使用 jquery 修改表格,然后fnDraw()会将其重置为未修改状态。 -
Render 似乎只在第一次创建表时被调用一次。如果我稍后做某事,比如更改显示的行数,则不会再次调用渲染。这就是我正在寻找的东西。一种强制渲染再次发生的方法,从而在行数发生变化时重置将要绘制的数据。
-
您是在谈论行级别的
render,即'render': function (data, type, full, meta) {? 确实在每次绘制表格时都会被调用 - 调试它或放入alert以检查这一点。
标签: javascript jquery datatables