数据表排序在桌子上用不同数量的列

时间:2017-07-31 11:11:40

标签: sorting datatables

我有一个具有不同数量列的表,但是总会有一列,尽管每次都有不同的位置,具体取决于要显示的数据(例如,它可能是第2列,第3列,列4等)。我想将此列设置为初始排序列并排序DESC。此列中显示的数据是一个复选框,因此数据排序属性用于对数据进行排序,其中1表示已选中,0表示未选中。

我需要做的是以下内容,我不知道如何在可以处于任何位置的列(即具有不同的索引)上实现它。如果有一个静态的列数,那么这将是正常的,因为我可以相应地设置选项知道列索引如下:

$('#example').dataTable({
    "order": [[ 2, 'desc' ]]
});

但是由于列的内容根据表内容而不同,因此我需要相应地引用该列。我需要:

  • 将初始排序列设置为此列;
  • 将排序顺序设置为DESC。

<< UNTESTED>> - 当选中/取消选中复选框时,我还需要相应地更改数据排序值(0或1)。我还没有测试过,但如果答案可用,我会很感激反馈 - 数据表是否会对数据排序属性进行更改并相应地调整排序?如果没有,在更改data-sort属性后,我可以传递给datatables以重新排序?

TIA

1 个答案:

答案 0 :(得分:0)

由于我找不到使用数据表实现此目的的任何方法,我已完成以下操作:

HTML

对于需要排序的列,请在' asc'中添加data-order属性。或者' desc'。

<th data-order="desc">Column Heading</th>

脚本

var ordering = [];
var theTable = jQuery( '#example' ).DataTable();
theTable.columns().every( function( i ) {
    var header = this.header();
    if ( jQuery( header ).is( '[data-order]' ) ) {
        var dataOrder = jQuery( header ).attr( 'data-order' );
        var theOrder = [ i, dataOrder ];
        ordering.push( theOrder );
    }
});
if( ordering.length > 0 ) {
    theTable.order( ordering ).draw();
}