2017-02-18 6 views
2

Так что, используя данные datatables https://datatables.net/, я хочу отформатировать валюту, чтобы она отображалась как 1 млрд. Долл. США (один миллиард), 1 млн. Долл. США (один миллион) и 1 тыс. Долл. США (одна тысяча), но дело в том, что при сортировке это один и тот же 1M как 1B, поэтому, если у меня есть 2M и 1B, 2 миллиона будут более 1 миллиарда, есть ли возможность сортировки с использованием такого формата?Сортировка со специальным форматом по номерам в данных datatables

ответ

1

Вы можете изменить File size сортировки плагин для получения кода ниже:

jQuery.fn.dataTable.ext.type.order['currency-abbr-pre'] = function (data) { 
    var matches = data.match(/^\$(\d+(?:\.\d+)?)\s*([a-z]+)/i); 
    var multipliers = { 
     k: 1000, 
     m: 1000000, 
     b: 1000000000 
    }; 

    if (matches) { 
     var multiplier = multipliers[matches[2].toLowerCase()]; 
     return parseFloat(matches[1]) * multiplier; 
    } else { 
     return -1; 
    }; 
}; 

$(document).ready(function(){ 
    var table = $('#example').DataTable({ 
     columnDefs: [ 
      { type: 'currency-abbr', targets: 1 } 
     ]  
    }); 
}); 

См this example для кода и демонстрации.

+1

я нашел более простое решение, я добавил тег данных сортировки в так DataTables сортируют по этому значению, но спасибо за ответ – Janva

+0

@Janva, да, это будет работать тоже. Я не знал, что у вас есть и оригинальные ценности. –

1
<td data-sort="1000">1B</td> 
<td data-sort="10">10M</td> 
+0

Ваше намерение хорошее, но я рекомендую улучшить ответ. Как объяснить, почему код, который вы публикуете, работает. Например, добавив простой текст, объясняющий немного ваших рассуждений: «Используйте одно устройство для сортировки в атрибуте' data-sort' и отобразите его в формате «пользовательский», –

Смежные вопросы