无法指定datatables javascript的默认列排序

无法指定datatables javascript的默认列排序,javascript,ajax,sorting,datatables,Javascript,Ajax,Sorting,Datatables,我需要按页面加载上的特定列进行排序,在这种情况下,让它以“RecordDate”降序显示初始结果 问题是,我相信服务器端正在阻止任何排序规范,我在下面所做的任何修改都不会加载结果(分类[[列数,名称,描述]]等) 我可以编写一个特殊函数来强制此列排序吗?在修改存储过程或另一个cs文件之前,是否可以在此处处理此问题 function GetRecords( DTO ) { var grpid = ApplyGroupingOnTable(); console.log( grpid ); oTabl

我需要按页面加载上的特定列进行排序,在这种情况下,让它以“RecordDate”降序显示初始结果

问题是,我相信服务器端正在阻止任何排序规范,我在下面所做的任何修改都不会加载结果(分类[[列数,名称,描述]]等)

我可以编写一个特殊函数来强制此列排序吗?在修改存储过程或另一个cs文件之前,是否可以在此处处理此问题

function GetRecords( DTO ) {
var grpid = ApplyGroupingOnTable();
console.log( grpid );
oTable = $( "#SearchTable" ).dataTable( {
    "oLanguage": {
        "sZeroRecords": "No records to display"//,
        //"sSearch": "Search on UserName"
    },
    "aLengthMenu": [[10, 25, 50, 100, 150, 250, 500], [10, 25, 50, 100, 150, 250, 500]],
    "iDisplayLength": 10,
    "sScrollX": "1300px",
    "bSortClasses": false,
    "bStateSave": false,
    "bFilter": false,
    "bLengthChange": true,
    "bPaginate": true,
    "bAutoWidth": false,
    "bProcessing": false,
    "bServerSide": true,
    "bDestroy": true,
    "sAjaxSource": "/Data/SearchRecords",
    "aoColumns": [
        { "mData": "SelectID", "sClass": "alternatingCenterAlign", fnRender: CreateSelectCaseViewerButton, "bSortable": false, "bSearchable": false, "sWidth": "18px" },
        { "mData": "ViewID", "sClass": "alternatingCenterAlign", fnRender: CreateCaseViewerButton, "bSortable": false, "bSearchable": false, "sWidth": "18px" },
        { "mData": "TagID", "sClass": "alternatingCenterAlign", fnRender: CreateTagCaseButton, "bSortable": false, "bSearchable": false, "sWidth": "18px" },
        { "mData": "ID", "sClass": "alternating", "sType": "string", "bSortable": true, "bSearchable": false, "sWidth": "50px" },
        { "mData": "ClientName", "sClass": "alternating", "sType": "string", "bSortable": true, "sWidth": "120px" },
        { "mData": "RecordDate", "sClass": "alternating", "sType": "string", "bSortable": true, "bSearchable": false, "sWidth": "70px" },

    "bJQueryUI": false,
    "sPaginationType": "full_numbers",
    "bDeferRender": true,
    "bRetrieve": false,
    "fnServerParams": function ( aoData ) {
        aoData.push( { "name": "iParticipant", "value": $( "#participant" ).val() } );
        aoData.push( { "name": "iSearch", "value": JSON.stringify( DTO ) } );
        aoData.push( { "name": "iId", "value": cliid } );
        aoData.push( { "name": "iOrder", "value": grpid } );
    },
    "fnDrawCallback": function ( oSettings ) {
        if ( grpid ) FinalGrouping( oSettings, grpid );
        $( ".overflow" ).each( function () { $( this ).attr( 'title', $( this ).text() ); } );
        $( '#tablediv select' ).chosen();
    },
    "fnServerData": function ( sSource, aoData, fnCallback ) {
        $( '.grid-loading' ).show();
        $.ajax( {
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            type: "GET",
            url: sSource,
            data: aoData,
            cache: false,
            success: function ( msg ) {
                if ( msg.Exception != undefined ) {
                    alert( msg.Exception );
                    $( '.grid-loading' ).hide();
                    return false;
                }
                lastId = ( msg.aaData.length > 0 ) ? msg.aaData[msg.aaData.length - 1][0] : 0;
                fnCallback( msg );
                $( '.grid-loading' ).hide();
            }
        } ); //End Ajax Call
    }
} );
}

假设您可以访问dataTable的数据数组,并且其形式如下:

var array = [ 
               { name: "somename", value: "somevalue" },
               { name: "somename2", value: "somevalue2" }
           ];
您可以根据以下值执行简单的降序排序:

array.sort(SimpleCompareDescOnValue);
鉴于功能:

function SimpleCompareDescOnValue(a, b) {
        // Use caution so as not to define 'undefined'.  It's not a great practice but it works.
        var c = a.length != undefined ? Math.max.apply(Math, a.map(function (o) { return o.value; })) : a.value;
        var d = b.length != undefined ? Math.max.apply(Math, b.map(function (o) { return o.value; })) : b.value;

        if (c > d)
            return -1;
        if (c < d)
            return 1;
        return 0;
    }
函数SimpleComparedSconValue(a,b){
//小心不要定义“未定义”。这不是一个很好的实践,但它是有效的。
var c=a.length!=undefined?Math.max.apply(Math,a.map(函数(o){return o.value;})):a.value;
var d=b.length!=undefined?Math.max.apply(Math,b.map(函数(o){return o.value;})):b.value;
如果(c>d)
返回-1;
if(c

不确定这是否对你有帮助。我从未使用过dataTable库(尽管它看起来很酷),但我必须假设您可以在从服务器提取数据后访问数据,并且它只在某种程度上存储在数组中是有意义的。

感谢您的响应。最后,我不得不将aaSorting属性修改为datatables.Jquery中的特定列desc。并在该栏上注明“日期”。按日期排序desc似乎让事情慢了一点,但这是另一个讨论!