更新由于分页/排序而隐藏的行

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() 以触发显示新数据。

【讨论】:

以上是关于更新由于分页/排序而隐藏的行的主要内容,如果未能解决你的问题,请参考以下文章

在更新到数据库之前编辑 DataTable 中的行

当我单击 gridview 分页时,它隐藏了整个网格本身

隐藏点击表上的行

无效更新:iOS 中第 0 部分的行数无效

过滤后动态添加到表的行不隐藏

如何隐藏表格行溢出?