5

如何fnUpdate对由于分页而当前不在视野中的行执行操作?

我正在开发一个 Web 应用程序,它在不同的 div 容器中使用两个 DataTable 实例。当一个容器可见时,另一个容器通过jQuery.fadeOut()/隐藏fadeIn()

在一个 div 中,我有一个汇总表,其中显示了在另一个隐藏的容器中可用的数据字段的选择。这些表之间的行通过_id#后缀映射到行 ID,例如,4_performance_3汇总表中的行 ID 映射到timeline_task_3完整明细表中的行 ID。

如果由于分页和/或排序导致行 idtimeline_task_3不可见,如果我已应用更改,如何更新行4_performance_3

在代码片段中,element由于行 ID 通过分页不在视图中,因此为 null

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

    }

} 
4

1 回答 1

0

好吧,隐藏表可能没有可选择的节点……但它肯定有自己的数据!

最简单的方法是保存对两个表的引用:

var mySummary = $('#exampleSum').dataTable();
var myTimeline = $('#exampleLine').dataTable();

现在,您始终可以使用 myTimeline.fnGetData() 获取每个表的数据。也许您需要添加一个额外的不可见数据列,以便您可以更轻松地在两个表之间进行引用。fnUpdate() 函数也适用于来自 fnGetData() 的索引。

我不确定,但也许您必须在表格再次可见之前或之后调用 myTimeline.fnDraw() 才能触发以显示新数据。

于 2014-03-01T01:07:56.130 回答