2017-02-03 13 views
0

2人の間に数字の接続を示すデータテーブルがあります。それらの中には接続がないものもあります。そのため、一部のセルでは文字列「x」が値として使用されることがあります。角型+データ型では数値が正しくソートされない

問題はソートです。私が列でソートすると、数値は最初の桁でソートされますが、ドットの前にはソートされません。

私はこのような小数点としてドットを設定します。

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

ここでテーブルは列のレオナルドによってソートされており、これが最初の桁でソートされていることがわかります。しかし、その代わりにする必要があります:94.36、66.39、9.96、7.31、...

何か私は間違っているかもしれませんか?

答えて

0

組み込み型の検出機能が優れています。しかし、何かが想定される型と競合する場合、列はデフォルトのアルファソートに変わります。あなたは完全な有効な日付の行を持つことができますが、最後の行にあなたの場合のようにヌルまたはxが含まれていると、アルファソートになります。あなたはcolumnDefsセクションでnumデータ型を強制することでこの問題を解決することができます

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

いけない、あなたのマークアップを知っているが、それは

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

今番号がソートされなければならないcorrectl

ようなものになるだろう
関連する問題