2016-12-15 60 views
1

我使用的數據表版本1.10.12和jQuery-1.11.1如何正確排序Jquery Datatable貨幣列?

我的貨幣列不正確排序,下面是我使用的排序

$(document).ready(function() { 
     $('#notSoCoolGrid').DataTable({ 
      "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]], 
      columnDefs: [{ type: 'currency', targets: 1 }], 
      "aaSorting": [[ 2, 'asc' ]] 
     }); 
    }); 

的代碼和我得到的如下圖所示爲我的貨幣column.Please注括號()被認爲是負數

($ 75.00)美元

($ 108.87)美元

($ 249.44)USD

($ 1,000.00)USD

£899.00 GBP

$ 905.00 AUD

£830.65 GBP

$ 825.00 USD

£59.67 GBP

+0

我是Datatable的新手..你如何實現它? – Danny

+0

你有不同的貨幣格式的價值?那麼你應該怎麼樣?我的意思是,當你升序時,你是否想把所有的價值轉換成一個通用的貨幣類型(美元),然後從小到大排序? –

+0

我想考慮澳元,英鎊匯率轉換..目前我認爲它只是檢出美元 – Danny

回答

1

使用brackets-negative排序插件。你的代碼可以保持不變,你只需要包含額外的JS文件//cdn.datatables.net/plug-ins/1.10.13/sorting/brackets-negative.js

+0

他也想要轉換他的匯率然後排序。是否只有客戶端代碼纔有可能? –

0

下面是最後爲我工作的,我不得不考慮匯率。

<link href="datatables/1.10.13/css/jquery.dataTable.min.css" type="text/css" rel="stylesheet" /> 
    <script src="js/jQuery/1.11.1/jquery.js"></script> 
    <script src="datatables/1.10.13/js/jquery.dataTables.js"></script> 
    <script> 
     $(document).ready(function() { 
      var currencies = { GBP: 1.2403, AUD: 0.7364, USD: 1 }; 
      $.fn.dataTable.ext.type.order['currencies-pre'] = function(d) { 
       var sign = /\([^)]*\)/.test(d)?-1:1; 
       var currency = currencies[d.match(/USD|GBP|AUD/).pop()]; // /!\ all MUST have currency 
       var n = d.replace(/[^\d.]/g,""); 
       console.log(sign * n * currency); 
       return sign * n * currency; 
      }; 
      $('#notSoCoolGrid').DataTable({ 
       "aoColumns": [{ sWidth: "10%", bSearchable: false, bSortable: false }, { sWidth: "90%", bSearchable: false, bSortable: true }], 
       "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]], 
       "columnDefs": [{ type: 'currencies', targets: 1 }], 
       "aaSorting": [[ 1, 'asc' ]] 
      }); 
     }); 
    </script>