2016-11-16 70 views
0

我在我的ProviderQualificationTime字段中有字符串數據。因爲數據是string,所以它沒有正確排序此列。我怎樣才能讓datatable把它當作Int列並根據它進行排序? 可能嗎? 樣本數據中ProviderQualificationTime領域:在jQuery數據表中將字符串數據排序爲Int Int

「1」, 「10」, 「11」, 「NotAccpeted」

代碼:

$('#tblProviders').dataTable({ 
          "autoWidth": false, 
          "searching": false, 
          "pageLength": 6, 
          "lengthMenu": [6, 10, 25, 50, 75, 100], 
          "bDestroy": true, 
          data: obj.data.ProviderQualificationDetails, 
          columns: [ 
             { "data": "ProviderName" }, 
             { "data": "ProviderQualificationTime" }, 
             { "data": "TotalServiceableOffers" } 
          ] 
         }); 
+0

'數據:obj.data.ProviderQualificationDetails.map(號碼),' – adeneo

+0

@adeneo會它不會將整個'ProviderQualificationDetails' 對象轉換爲數字?我只想'ProviderQualificationTime'是類型編號。 –

+0

然後我想你必須弄清楚如何映射它並只將你想要的索引轉換成數字 – adeneo

回答

0

這是醜陋的,但工程:

$(document).ready(function() { 
    jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
    "numNonStandard-asc": function (a, b) { 
     var x = isNaN(parseInt(a, 10)) ? 0 : parseInt(a, 10); 
     var y = isNaN(parseInt(b, 10)) ? 0 : parseInt(b, 10); 
     return (x == y) ? 0 : (x < y) ? 1 : -1; 
    }, 
    "numNonStandard-desc": function (a, b) { 
     var x = isNaN(parseInt(a, 10)) ? 0 : parseInt(a, 10); 
     var y = isNaN(parseInt(b, 10)) ? 0 : parseInt(b, 10); 
     return (x == y) ? 0 : (x < y) ? -1 : 1; 
    } 
    }); 
    $('.table-data').DataTable({ 
    columnDefs: [ 
     { type: 'numNonStandard', targets: -1 } 
    ] 
    }); 
}); 

工作example

0

我會用columnDef對象來指定,像這樣渲染功能:

$('#tblProviders').dataTable({ 
"autoWidth": false, 
"searching": false, 
"pageLength": 6, 
"lengthMenu": [6, 10, 25, 50, 75, 100], 
"bDestroy": true, 
data: obj.data.ProviderQualificationDetails, 
columns: [ 
    { "data": "ProviderName" }, 
    { "data": "ProviderQualificationTime" }, 
    { "data": "TotalServiceableOffers" } 
], 
"columnDefs": [ { 
    "targets": 1, 
    "render": function (data, type, full, meta) { 
     // If this is a display render request ... 
     if(type === 'display') { 
     // don't modify it. 
     return data; 
     } 

     // Either convert it to a number if it is a numeric value or set it to 0 
     // This will return a numeric value for sorting and filtering. 
     return (isNaN(data)) ? 0 : +data; 
    } 
}] 
}); 

因此,與您的列自定義呈現,你可以有一個未修改的顯示值和轉換後的排序/過濾器值。

相關問題