使jQuery数据表保留搜索/排序时分配的行号

时间:2012-08-24 21:54:29

标签: jquery datatables

我有以下代码在jQuery Datatables中创建一个行号:

"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull){ 
        var index = iDisplayIndexFull + 1; 
        $('td:eq(0)', nRow).html(index); 
        return nRow;
     },

但是,当我搜索某个值时,行号会更新。这是预料之中的。我的问题是,无论如何,在最初创建行号后仍然保持不变?

示例:

 Initial output
 1     Team1
 2     Team2
 3     Team3
 4     Team4
 5     Team5

 After Searching
 2     Team2
 5     Team5

这可能吗?

3 个答案:

答案 0 :(得分:1)

"fnDrawCallback": function ( oSettings ) {
 /* Need to redo the counters if filtered or sorted */
 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 );
 }
 }
 }

答案 1 :(得分:0)

我最初会在行上设置data属性:

"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull){ 
        var index = iDisplayIndexFull + 1; 
        $('td:eq(0)', nRow).attr('data-index',$('td:eq(0)', nRow).attr('data-index')||index);
        $('td:eq(0)', nRow).html($('td:eq(0)', nRow).attr('data-index',index));
        return nRow;
     },

答案 2 :(得分:0)

您可以将原始ID存储在aData

aData.index = iDisplayIndexFull + 1;

然后,您可以稍后使用以下命令访问它:

var index = oTable.fnGetData(your_row).index;