Jquery Datatablesでいくつかのカスタムソートを行う必要があります。カスタムソートごとにカスタムソート関数を記述したくありません。
ソートする値を定義し、値が定義されている場合、Datatablesに元の列の値を無視させます。
例えば:
<td data-sort="111123">E 1.111,23</td>
Jquery Datatablesが111123
でこの列を数値的にソートするようにします。
<td data-sort="19801220">20-12-1980</td>
Jquery Datatablesが19801220
でこの列を数値的にソートするようにします。
<td>a string</td>
Jquery Datatablesでこの列を元の値a string
で並べ替えたい。
http://www.datatables.net/plug-ins/sorting には「隠しタイトルの数値ソート」があり、これは私が望むものに近いですが、このカスタムのどの列のすべてのデータテーブルに指定する必要があります並べ替えが適用されます。さまざまなサイズのデータテーブルが多すぎて、妥当な時間内にこれを行うことができません。 Datatablesに、この隠された値/ data- *属性が存在する場合、常にそれらをソートするようにします。特定の列にカスタムソート定義は必要ありません。
関連: jQuery DataTables:セルのコンテンツではなくカスタムパラメーター値でソートする方法? しかし、残念ながらカスタムパラメーターで単純にソートする方法については答えがありません。代わりにカスタムソートスクリプトへのポインター。
たとえば、データ順序属性を使用できます。
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>Date</th>
<th>Count</th>
</tr>
</thead>
<tbody>
<?php
$count = 0;
foreach($users as $user) {?>
<tr>
<td data-order="<?php echo $count ?>">
<?php echo $user['createdDate']; ?>
</td>
<td>
<?php echo $user['count']; ?>
</td>
</tr>
<?php
$count++;
}?>
<tr>
<td data-order="999999999999999999999999999"> <!--always last-->
Total
</td>
<td>
<?php echo count($users); ?>
</td>
</tr>
詳細 HTML5データ-*属性
私にとって便利で、datatables.jsのコードや変更をあまり必要としない簡単なソリューションを見つけました。
質問の要件に非常に似ていますが、まったく同じではありません。
の代わりに data-sort
HTMLコメントタグを使用できます。
<td data-sort="111123">E 1.111,23</td>
になる
<td><!-- 000000111123 -->E 1.111,23</td>
int
をゼロでパディングすることにより、string
としてソートされます。ゼロパディングにより、ソートは期待どおりに動作します。整数を高から低にソートします。
解決策は、日付、整数、および文字列に対して機能します。日付と整数の場合、スクリプト言語を使用して、希望する方法で出力できます(例:ゼロ詰め、yyyy-mm-dd形式)。