在jQuery数据表中的选定行之后添加一行

在jQuery数据表中的选定行之后添加一行,jquery,datatables,jquery-datatables,Jquery,Datatables,Jquery Datatables,DataTable定义为 var oTable = $('#table1').dataTable({ 'aaData': [ ['John', 'ABC', '$90000'], ['Doe', 'XYZ', '$100000'], ['Alan', 'PQR', '$110000'] ], 'aoColumns': [ {'sTitle': 'Name'}, {'sTitle': '

DataTable定义为

var oTable = $('#table1').dataTable({
    'aaData': [
                 ['John', 'ABC', '$90000'], ['Doe', 'XYZ', '$100000'], ['Alan', 'PQR', '$110000']
              ],
    'aoColumns': [
                 {'sTitle': 'Name'}, {'sTitle': 'Company'}, {'sTitle': 'Salary'}
     ]
});
一个空行被添加为

oTable.fnAddData([' ', ' ', ' ']);

但是,这会增加表的底部。是否有一种方法可以在选定行的正下方/上方添加

我认为没有一些自定义排序功能是不可能的。位置完全基于排序。开发者在这里支持这一点:在这里,你认为你太匆忙了,不能接受你不能做你想做的事:)当然这是可能的,但很难确定在什么情况下。这个问题不是很具体。以下代码在您单击的最后一行之后插入新行:

var dataTable;
var options = {
    bSort: false,
    bPaginate: false
};

function initDataTable() {
  dataTable = $('#example').dataTable(options);
}

function attachClickHandler() {
    $("#example tbody tr").click(function(event) {
        var index=$(this).index();
        $("#insert").text('insert a row below the row you just clicked ('+index+')').attr('index',index).show();
    });
}

$("#insert").click(function() {
    var index=$(this).attr('index');
    var newRow = '<tr>'+
        '<td>new</td>'+
        '<td>new</td>'+
        '<td>new</td>'+
        '<td>new</td>'+
        '<td>new</td>' +
        '</tr>';
    dataTable.fnDestroy();
    $("#example tbody tr").eq(index).after(newRow);    
    initDataTable();
    attachClickHandler();
});

initDataTable();
attachClickHandler();
var数据表;
变量选项={
bSort:false,
bPaginate:错误
};
函数initDataTable(){
dataTable=$(“#示例”).dataTable(选项);
}
函数attachClickHandler(){
$(“#示例tbody tr”)。单击(函数(事件){
var index=$(this.index();
$(“#insert”).text('在刚才单击的行('+index+')下面插入一行。).attr('index',index).show();
});
}
$(“#插入”)。单击(函数(){
var index=$(this.attr('index');
var newRow=''+
“新的”+
“新的”+
“新的”+
“新的”+
“新的”+
'';
dataTable.fndostroy();
$(“#示例tbody tr”).eq(index).after(newRow);
initDataTable();
attachClickHandler();
});
initDataTable();
attachClickHandler();
其思想是将新行插入到底层DOM表中,然后在完成后重新初始化dataTable。它也可以通过排序来工作,但出于演示目的,我关闭了排序。正如@ScottySmals所提到的,dataTables实际上是在对所有内容进行排序,因此一个新插入的行将立即被排序,这看起来好像它没有正确插入

请参见演示->