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

时间:2013-07-28 23:29:38

标签: jquery jquery-datatables

如何对由于分页而当前不在视图范围内的行执行fnUpdate操作?

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

隐藏

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

如果由于分页和/或排序而无法显示行ID timeline_task_3,如果我将更改应用于4_performance_3,如何更新该行?

在代码段中,由于行ID通过分页不在视图范围内,element为空

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 个答案:

答案 0 :(得分:0)

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

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

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

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

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