1

我正在使用数据表 v1.10,它随着时间的推移有了很大的改进。但是我正在尝试添加索引号。

到目前为止,我已经设法添加了索引号,但我无法记录在搜索后保留它的原始索引号。

假设我有这张桌子:

POSITION NAME
0        Tennis
1        Football
2        Basketball

如果我要在篮球上搜索,我应该像这样得到 POSITION 2:

POSITION NAME
2        Basketball

但是,数据表没有给出位置 2,而是从 0 开始重新计数(或者在我的情况下为 1,因为我让它从 1 开始)

我希望索引号在搜索后保留其正确值。

我上次使用:

"fnDrawCallback": function ( oSettings ) {
     if ( oSettings.bSorted || oSettings.bFiltered ) {
        for ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ ){
            $('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[i] ].nTr ).html( i+1 );
        }   
     }
},      

我试图将其转换为他们的新 api,但我找不到正确的解决方法。

这是我正在使用的当前服务器端代码:

require('ssp.class.php');

$result=SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns );
$start=$_REQUEST['start'] + 1;
foreach($result['data'] as &$res){
    $res["id"]=(string)$start;
    $start++;
}
echo json_encode($result);

和客户端:

$(document).ready(function() {
    var t = $('#table-data').DataTable( {               
        "processing": true,
        "serverSide": true,
        "ajax": {
            "url": "index.php",
            "type": "GET"
        },
        "columns": [
            {"data": "position"},
            {"data": "name"},
        ]

    });
});

我的问题类似于:使 jQuery 数据表在搜索/排序时保持分配的行号

我尝试了那里建议的代码,但它似乎在 datatables v1.10 中不起作用(我更改了正确的 api 命名)

4

1 回答 1

2

是的,它可以通过以下代码实现:

$(document).ready(function() {
var t = $('#table-data').DataTable( {               
    "processing": true,
    "serverSide": true,
    "ajax": {
        "url": "index.php",
        "type": "GET"
    },
    "columns": [
        {"data": "position"},
        {"data": "name"},
    ]

});
t.on( 'order.dt search.dt', function () {
    t.column(0, { order:'applied'}).nodes().each( function (cell, i) {
        cell.innerHTML = i+1;
    } );
} ).draw(); 
}); 
于 2015-11-23T19:54:46.073 回答