2013-10-04 9 views
5

を動作していないTableSorterのカスタムパーサーは私のカスタムパーサーです:jQueryの - ここで

  • ABC-DE-1
  • ABC-DE-10
  • $.tablesorter.addParser({ 
        id: "customParser", 
        is: function (stringValue) { 
         return false; 
        }, 
        format: function (stringValue) { 
         var stringValueParts = stringValue.split("-"); 
         var numericPartOfStringValue = parseInt(stringValueParts[2]); 
         return numericPartOfStringValue ; 
        }, 
        type: 'numeric' 
    }); 
    

    のstringValueは次のような値を持つことになります

  • ABC-DE-100
  • ABC-DE-101
  • ABC-DE-1000

ここでは、私はtablesorterをアップセットとカスタムソートパーサーを追加したコードです:

$(function() { 
    $("#dataTable").tablesorter({ 
     headers: { 
      3: { 
       sorter: 'customParser' 
      } 
     } 
    }); 
}); 

私はにconsole.log(numericPartOfStringValue)を追加しましたし、数字がすべてに書き出されましたコンソールはパーサーがやっているべきことをやっているように見えます。

どうしたらいいですか?

私は私の値は以下のように文字列の数字の一部でソートしたい:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-101
  • ABC-DE-1000

実際に何が起こっていますか?

値は、この方法でソートされている:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-1000
  • ABC-DE-101

私は他に何をしようとしたのですか?

は、私は私のHTMLに次を追加しましたが、それは違いはありませんでした:

<th class="{sorter: 'CustomParser'}"> 
    String Value Column 
</th> 

そして最後に:ここで

は、表のセルから値の例である:

<td> 
    <span class="badge">ABC-DE-1</span> 
</td> 
+0

あなたはDataTableのかtablesorterを使用していますか? tablesorterを使い続けたいのであれば、デフォルトで英数字の並べ替えを使用する私の[tablesborderのfork](http://mottie.github.io/tablesorter/docs/)を試してみてください。あなたのケースに特別なパーサーは必要ありません。 – Mottie

+0

私はページング用のデータテーブルと並べ替えのためのtablesorterの両方を使用していました。問題は、私のカスタムtablesorterパーサがデータテーブルページングで動作していないことでした。なぜ私はデータ型のソートを使用していなかったのか分かりませんので、データ型のソートを使用するようにコードを切り替えました。私はデータテーブルにカスタムパーサを実装しましたが、現在はすべて動作しています。 したがって、この質問は今や冗長です。見ていただきありがとうございます。 –

答えて

3

その仕組みは、デフォルトの並べ替え順序を設定するだけです。私はsortList.を使用しました。これは、th-インデックスと順序(asc = 0、desc = 1)を含むタプルの配列です。fiddle作業

$("#dataTable").tablesorter({ 
    sortList: [[0,0]], 
    headers: { 
      0: { 
       sorter: 'customParser' 
      } 
     } 
    }); 
+0

フィドルが働いてくれてくれてありがとう。あなたのフィドルは、 "sortList:[[0,0]]"を使わずにカラムヘッダーをクリックするだけで動作しますが、ロード時にはソートされません。なぜ私のコードがうまくいかないのか分かりません。だから私は困惑しています。私はページングを使用しているので、これは問題を引き起こしている可能性があると考えました。ページングを削除すると、元のコードが正常に動作しているので、ページングの中でこれが動作しないようにするものと思われます。 私はページングとフィルタリングのためにdatatables.netを使用していますが、なぜ私は並べ替えのためにdatatables.netを使用していないのか分かりません。私は確認するためにオフです。 –

+0

私はtablesorterがdatatables.netページングで作業していなかった理由を理解しませんでしたが、tablesorterの代わりにdatatables.netソートを使用しました。 問題であることが自分のコードではないことを確認していただきありがとうございます。 –

+0

@careywalker上記のあなたの投稿を更新してみてください。 – Nix