2017-02-03 7 views
0

У меня есть данные, которые показывают цифровую связь между двумя людьми. Некоторые из них не имеют никакой связи, поэтому в некоторых ячейках может быть строка «x».Угловые + Datatables не сортируют числа справа

Вопрос, который я получил, это сортировка. Если я сортирую по столбцу, цифры сортируются только по первой цифре, но не по части перед точкой.

Я поставил точку в качестве десятичного разделителя, например так:

var lang = { 
     "decimal":  ".", 
     "emptyTable":  "No data available in table", 
     "info":   "Showing _START_ to _END_ of _TOTAL_ entries", 
     "infoEmpty":  "Showing 0 to 0 of 0 entries", 
     "infoFiltered": "(filtered from _MAX_ total entries)", 
     "infoPostFix": "", 
     "thousands":  "", 
     "lengthMenu":  "Show _MENU_ entries", 
     "loadingRecords": "Loading...", 
     "processing":  "Processing...", 
     "search":   "Search:", 
     "zeroRecords": "No matching records found", 
     "paginate": { 
      "first":  "First", 
      "last":  "Last", 
      "next":  "Next", 
      "previous": "Previous" 
     }, 
     "aria": { 
      "sortAscending": ": activate to sort column ascending", 
      "sortDescending": ": activate to sort column descending" 
     } 
    }; 

    $scope.dtOptions = DTOptionsBuilder.newOptions() 
     .withDOM('frtip') 
     .withOption('language', lang) 
     .withButtons([ 
      { 
       extend: 'csv', 
       text: 'Download as CSV' 
      }, 
      { 
       extend: 'excel', 
       text: 'Download as XLS' 
      } 
     ]); 

А вот выдержка из данных, полученных из консоли вывода:

datatable

Опять скриншот для объяснения неправильная сортировка:

wrong sorting

Здесь таблица сортируется по столбцу leonard, и вы можете видеть, что это было отсортировано по первой цифре. Но вместо этого это должно быть: 94.36, 66.39, 9.96, 7.31, ...

Любая идея, что я могу ошибаться?

ответ

0

Встроенный детектор работает отлично. Однако, если что-либо конфликтует с предполагаемым типом, столбец превращается в сортировку альфа-альфа по умолчанию. У вас может быть строка идеальных дат, но если последняя строка содержит нуль или x, как в вашем случае, вы получите альфа-сортировку. Вы можете решить эту проблему, заставляя num тип данных в columnDefs разделе:

$scope.dtColumnDefs = [ 
    { targets: 0, type: 'num' } //0 is the column index 
]; 

не знаю разметку, но это было бы что-то вроде

<table datatable="" dt-options="dtOptions" dt-column-defs="dtColumnDefs"> 

Теперь цифры должны быть отсортированы correctl

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