【问题标题】:DataTables wrong sorting on some columns?DataTables 在某些列上排序错误?
【发布时间】:2014-05-01 18:10:18
【问题描述】:

我正在使用 JQuery 插件 Datatables 并且它没有按应有的方式排序,第一列排序正常,但其他所有内容都排序错误。当我尝试对“长度”列进行排序时,出现错误。自己测试一下:http://ppaddict.com/tests.php 它们都是 int 或 double 并且在 phpmyadmin 中我对它们进行排序没有问题。 长度是“时间”。

$(document).ready(function() {
  var oTable = $('#example').dataTable({
    "bServerSide": true,
    "sAjaxSource": "serversideTests.php",
    "sAjaxDataProp": "aaData",
    "bProcessing": true,
      "aoColumns": [{
      "mData": [0],
      "sClass" : "hidden"
    }, {
      "mData": [1],
      "sClass" : "aligncenter"
    }, {
      "mData": [2],
      "sClass" : "aligncenter"
    }, {
      "mData": [3],
      "sClass" : "aligncenter"
    }, {
      "mData": [4],
      "sClass": "hidden"
    }, {
      "mData": [5],
      "sClass": "hidden"
    }, {
      "mData": [6],
      "sClass": "hidden"
    }, {
      "mData": null,
      "bSortable" : false,
      "sClass" : "aligncenter",
      "mRender": function(data, type, full) {
        return full[4] + ' - ' +
            full[5] + ' [' + full[6] + ']' +
          '<br><a href=' + 'http://osu.ppy.sh/d/' + full[0] + '>' + 'Download' + '</a>';
      }
    }, {
      "mData": [7],

      "sClass" : "aligncenter"
    }, {
      "mData": [8],
      "sClass" : "aligncenter"
    }, {
      "mData": [9],
      "sClass" : "aligncenter"
    }, {
      "mData": [10],
      "sClass" : "aligncenter"
    }, {
      "mData": [11],
      "sClass" : "aligncenter"
    }], "aaSorting": [[2, 'desc']]
  })
})

我正在使用 DataTables 中的服务器端示例,稍作修改:

    while ( $aRow = mysql_fetch_array( $rResult ) )
    {
        $row = array();
        for ( $i=0 ; $i<count($aColumns) ; $i++ )
        {
            if ( $aColumns[$i] == "setid" )
            {
                /* Special output formatting for 'version' column */
                $row[] = ($aRow[ $aColumns[$i] ]) ? /* <a href='$aRow[ $aColumns[$i] ]'><img src='http://s.ppy.sh/images/osu-download-direct.png'></a>*/
           '<a href=\'http://osu.ppy.sh/s/'.$aRow[ $aColumns[$i]].'\' target=\'_blank\'><img height=\'100\' witdh=\'100\' src=\'http://b.ppy.sh/thumb/'.$aRow[ $aColumns[$i]].'l.jpg\' alt=\'N/A\'></a><a href=\'osu://dl/'.$aRow[ $aColumns[$i]].'\'><img height=\'100\' witdh=\'100\'  src=\'http://s.ppy.sh/images/osu-download-direct.png\'></a>'  : $aRow[ $aColumns[$i] ];
            }

            else if ( $aColumns[$i] == 'length' ) 
            {
                $row[] = ($aRow[ $aColumns[$i] ]) ? 


date('i:s',strtotime($aRow[ $aColumns[$i] ]))   : $aRow[ $aColumns[$i] ];

            }


            else if ( $aColumns[$i] != ' ' )
            {
                /* General output */
                $row[] = $aRow[ $aColumns[$i] ];
            }
        }
        $output['aaData'][] = $row;
    }

    echo json_encode( $output );

【问题讨论】:

    标签: jquery sorting datatables


    【解决方案1】:

    数据表默认按第一列排序

    您可以通过添加aoColumns更改默认排序

    $(document).ready(function() {
        $('#example').dataTable( {
            "aoColumns": [
                null,
                { "asSorting": [ "asc" ] },
                { "asSorting": [ "desc", "asc", "asc" ] },
                { "asSorting": [ "desc" ] },
                null
            ]
        } );
    } );
    

    或者您可以按定义的列排序

    $(document).ready(function() {
        $('#example').dataTable( {
            "order": [[ 3, "desc" ]]
        } );
    } );
    

    【讨论】:

    • 对不起,如果我没有正确理解你,但我的问题是,当我尝试按某些列排序时,它没有给我 1|2|3|4|5 它使它们 3 |2|5|1|2
    猜你喜欢
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多