更新由于分页/排序而隐藏的行
Posted
技术标签:
【中文标题】更新由于分页/排序而隐藏的行【英文标题】:Update row that is hidden due to pagination/sorting 【发布时间】:2013-07-28 15:42:09 【问题描述】:如何对当前因分页而无法查看的行执行fnUpdate
操作?
我正在开发一个 Web 应用程序,该应用程序在不同的 div 容器中使用两个 DataTable 实例。当一个容器可见时,另一个容器通过jQuery.fadeOut()
/fadeIn()
隐藏起来
在一个 div 中,我有一个汇总表,其中显示了在另一个隐藏的容器中可用的数据字段的选择。这些表之间的行通过_id#
后缀映射到行ID,例如,汇总表中的行ID4_performance_3
映射到完整详细表中的行IDtimeline_task_3
。
如果由于分页和/或排序导致行 ID timeline_task_3
不可见,如果我已将更改应用到 4_performance_3
,如何更新行?
在代码 sn-p 中,element
为 null,因为行 ID 通过分页不在视图中
var tableArray = timelineTable.fnGetNodes();
var elemSplit;
for (var i = 0; i < tableArray.length; i++)
elemSplit = tableArray[i].id.split("_");
if (elemSplit[2] == currentTask.id)
element = document.getElementById(tableArray[i].id);
timelineTable.fnUpdate(currentTask.internal, element, 0, false);
timelineTable.fnUpdate(currentTask.dueDate, element, 1, false);
timelineTable.fnUpdate(currentTask.label, element, 4, false);
timelineTable.fnUpdate(currentTask.complete, element, 6, false);
timelineTable.fnUpdate(currentTask.comments.length, element, 7, false);
timelineTable.fnSort([[1, "asc"]]);
console.log("updated timeline tasks");
【问题讨论】:
【参考方案1】:嗯,隐藏表可能没有可选择的节点……但它肯定有自己的数据!
最简单的方法是保存对两个表的引用:
var mySummary = $('#exampleSum').dataTable();
var myTimeline = $('#exampleLine').dataTable();
现在您可以随时使用 myTimeline.fnGetData() 获取每个表的数据。也许您需要添加一个额外的不可见数据列,以便您可以更轻松地在两个表之间进行引用。 fnUpdate() 函数也适用于来自 fnGetData() 的索引。
我不确定,但也许您必须在表格再次可见之前或之后调用 myTimeline.fnDraw() 以触发显示新数据。
【讨论】:
以上是关于更新由于分页/排序而隐藏的行的主要内容,如果未能解决你的问题,请参考以下文章