2017-11-26 8 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

은 UPDATE뿐만 아니라 this link의 대답에 있지만

+1

정렬 할 때 서버에 대한 요청은 무엇입니까? 브라우저에서 F12 키를 누른 다음 네트워크 탭에서 모두 선택을 취소하고'캐시 사용 안함 '을 선택하면 브라우저에서 dev 도구를 열 수 있습니다. 이제 정렬을 클릭하고 요청이 무엇인지 확인하십시오. 어쩌면 자바 스크립트는 괜찮지 만 api는 올바르게 정렬 된 데이터를 제공하지 않습니다. – HMR

+1

당신은'serverSide : true'를 가지고 있기 때문에 orderings serverside도 처리해야합니다. – davidkonrad

+0

@HMR 데이터를 서버 측에서 정렬해야한다는 것을 알지 못했습니다. 제가 확인해 볼 제안에 감사드립니다. – nuwanjaya

답변

0

변화없이 따라 aaSorting : [] 옵션을 시도 : 는 순서가 진행되지 뒤에 이유를 알게되었습니다. 문제는 .datatables_extended({ 함수에서 발생했습니다. 일단 .DataTable({으로 변경 한 다음 serverSide: false을 만든 다음 주문을위한 열을 제공하여 작업을 시작했습니다.