0

所以我有这张表,我正在使用 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();
}

这是第一次运行与多次运行的几个屏幕截图

第一次运行 多次运行

我什至不知道如何解释问题是什么,所以希望图像有所帮助

4

1 回答 1

0

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

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

于 2013-01-29T22:37:08.907 回答