2014-04-07 129 views
0

我正在使用jQuery數據表來顯示數據。沒有數據時顯示' - '。目前,當表的數據進行排序的所有「 - 」進來開始,順序看起來象下面這樣:jQuery中的自定義列排序Datatable

-- 
-- 
10 
20 
400 
800 

但我需要「 - 」按升序排序時顯示最後的,應該看起來像下面這樣:

10 
20 
400 
800 
-- 
-- 

請讓我知道我們如何在jQuery數據表中得到這種行爲?

+0

你嘗試過什麼?可能是http://www.datatables.net/plug-ins/sorting中的示例可能有所幫助。 –

回答

0

您可以使用下面的代碼:

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

對於reference

+0

不,這個解決方案不能按預期工作,因爲我們需要定義asc的定義和desc的關於' - '的排序。通過代碼片斷,您只能使用默認行爲以降序排序。希望我能夠清楚地表達。 – Pradeep

1

您可以使用exstension

jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
    "myorder-pre": function (a) { 

    }, 

    "myorder-asc": function (a, b) { 
     if(a == '--' && b != '--') 
      return 1; 
     else if(b == '--' && a != '--') 
      return -1; 
     else if(b == '--'&& a == '--') 
      return 0; 
     else 
     { 
      a = parseFloat(a); 
      b = parseFloat(b); 
      return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 

     } 
    }, 

    "myorder-desc": function (a, b) { 
     if(a == '--' && b != '--') 
      return -1; 
     else if(b == '--' && a != '--') 
      return 1; 
     else if(b == '--'&& a == '--') 
      return 0; 
     else 
     { 
      a = parseFloat(a); 
      b = parseFloat(b); 
      return ((a < b) ? 1 : ((a > b) ? -1 : 0)); 

     } 
    } 
}); 

myorder預則所有的順序調用之前使用。 myorder-asc當你訂購asc。如果一個小b返回數字爲負數,如果一個大b則返回正數,如果相等則返回0。 說明工作不良

然後在數據表中列的定義,請使用

"aoColumnDefs": [{ "sType": 'myorder'}] 
+0

謝謝。這正是我所期待的。一旦我整合了你的實現,我會更新我的評論。再次感謝。 – Pradeep