2017-11-26 11 views
0

AJAX呼び出しでページに描画可能なデータテーブルがあります。 私は、デフォルトで最新のエントリが一番上になるように内容を注文する必要があります。しかし、パラメータが変更されたにもかかわらず、順序の変更は全くなく、レコードはランダムにリストされます。JQueryのデータ型で順序付けが機能しない

var InitiateViewOption = null; 
var deviceId = null; 
var deviceType = null; 
var fromTime = null; 
var toTime = null; 
var keys = null; 

function drawTable(from, to) { 
    var device = $("#device-details"); 
    deviceId = device.data("deviceid"); 
    deviceType = device.data("devicetype"); 
    keys = device.data("attributes").split(","); 
    fromTime = from * 1000; 
    toTime = to * 1000; 
    if ($.fn.dataTable.isDataTable('#stats-table')) { 
     var table = $('#stats-table').DataTable(); 
     table.clear().draw(); 
     table.ajax.reload(); 
    } 
    else { 
     $("#stats-table").datatables_extended({ 
      serverSide: true, 
      processing: true, 
      searching: false, 
      ordering: true, 
      pageLength: 100, 
      order: [[ 0, 'desc' ]], 
      ajax: { 
       url: "/devicemgt/api/stats/paginate", 
       data: buildAjaxData 
      } 
     }); 
    } 
} 

function buildAjaxData(){ 
    var settings = $("#stats-table").dataTable().fnSettings(); 

    var obj = { 
     //default params 
     "draw" : settings.iDraw, 
     "start" : settings._iDisplayStart, 
     "length" : settings._iDisplayLength, 
     "columns" : "", 
     "order": "", 
     "deviceType" : deviceType, 
     "deviceId" : deviceId, 
     "from": fromTime, 
     "to" : toTime, 
     "attributes" : JSON.stringify(keys) 
    }; 

    return obj; 
} 

ordering : trueを製造する見かけ上のどこかにランダムに付加され、それぞれの新しいレコードのレコードの実際の順序に変化がない降順に従ってテーブルヘッダとorder: [[ 0, 'desc' ]]セットアイコンの近くにアイコンを有効にしたがテーブルに

enter image description here

同様this link上の答えに応じaaSorting : []オプションを試してみましたが、全く変化

+1

ソート時にサーバーに対して行われた要求は何ですか?ブラウザーでF12キーを押し、ネットワークタブですべてをクリアし、 'disable cache'をチェックして、ブラウザーで開発ツールを開くことができます。ここでソートをクリックし、どのリクエストが行われたかを確認します。たぶんJavaScriptは問題ありませんが、apiはソートされたデータを正しく提供していません。 – HMR

+1

あなたは 'serverSide:true'を持っているので、注文するサーバサイドも処理する必要があります。 – davidkonrad

+0

@HMRサーバー側でデータを並べ替える必要があることに気がつきませんでした。 – nuwanjaya

答えて

0

UPDATEと:行わない発注の背後にある理由を見つけた 。 問題は.datatables_extended({機能にありました。 これを.DataTable({に変更した後、serverSide: falseとし、注文を行うための列を入力して作業を開始しました。

関連する問題