jQuery Datatables在其上方添加新行时更新一个现有行

时间:2013-01-29 21:55:44

标签: javascript jquery datatables

所以我有这个表我正在使用datatables.js帮助我使它有点功能。这就是说我已经遇到了在这个表中有6个最初渲染的行的需要,这些行在很大程度上永远保持完整,并且在那里有一个例外井3,但是只有一个当前很重要,因为我认为如果我可以解决这个问题其他类似的问题应该很容易模仿。无论如何,规则的例外是6个静态行的最后一行始终保持在底部。有了它,我需要在最后一行上方追加一行。含义第6行将是新的7,新行将是第6行。

我的表已从客户端方面进行排序,但确实通过隐藏列保留排序顺序。因此,我需要在每次运行时调整列的索引。到目前为止我可以用第一次运行的函数来做,但是如果我在运行后再次触发该函数,那么顺序就会有点疯狂。所以这里说的是我的数据表代码:

var oTable = $('#manager').dataTable({
        "sPaginationType": "full_numbers",
        "bPaginate": false,
        "bFilter": false,
        "bAutoWidth": true,
        "sScrollY": "300px",
        "bScrollCollapse": true,
        "aaSortingFixed": [[0,'asc']],
        "oLanguage": {
            "sInfo": 'Tasks: _END_',
            "sEmptyTable": "No Job/Task Sources to display currently.",
            "sInfoEmpty": "No Job/Task(s)."
        },
        "aoColumns": [
              { "bSortable": true, "bVisible": true},
              { "bSortable": false, "sWidth":"5%", "sClass":"center"},
              { "bSortable": false, "sWidth":"85%"},
              { "bSortable": false, "sWidth":"10%"},
           ]
    });

这是迄今为止我提出的功能..

function newTaskData()
{
    var lastTR = taskmanagerTable.fnGetData($('.static:last').get(0));
    var currLast = parseInt(lastTR[0]);
    var newLast = parseInt(lastTR[0])+1;
    alert([newLast, currLast])

    taskmanagerTable.fnUpdate(newLast, currLast, 0);
    taskmanagerTable.fnAddData([currLast, 'checkbox', 'data source', 'E R D']);
    taskmanagerTable.fnDraw();
}

这是第一次运行和多次运行的几个屏幕上限

First Run Multiple Runs

我甚至不知道如何解释问题所在,所以希望图片有所帮助

1 个答案:

答案 0 :(得分:0)

我认为在最后一行(复选框)上使用fnDeleteRow会更容易,添加新记录,然后重新添加复选框。

您的问题正在发生,因为您正在复制整个行对象,包括索引,这就是您在屏幕截图中最终得到两个6的原因。