Datatablesの最終日時ソートプラグイン(https://datatables.net/blog/2014-12-18)を使用して日付列をソートしていますが、正しいフォーマットで日付を正しくソートすることはできません。ページのロード時、以下のスクリプトが実行されます。jQuery Datatables究極の日付/時刻ソートプラグイン
//sets the date format for datatables for sorting purposes
//reference: https://datatables.net/blog/2014-12-18
$.fn.dataTable.moment('M/D/YYYY');
/* Datatables */
$('.datatable').DataTable({
language : {
search : "_INPUT_",
searchPlaceholder : "Search...",
paginate : {
"next" : '<i class="fa fa-chevron-right"></i>',
"previous" : '<i class="fa fa-chevron-left"></i>'
}
},
responsive : {
details : {
display : $.fn.dataTable.Responsive.display.childRowImmediate,
type : 'column'
}
},
order : [0, 'desc'],
//date sorting
columnDefs:
{
targets: 'date_sortable',
render: function (data, type, full, meta) {
if(type === 'display'){
if(data){
var mDate = moment(data);
data = (mDate && mDate.isValid()) ? mDate.format("M/D/YYYY") : "";
console.log('rewrote data to ' + data);
}
}
console.log('date_sortable rendered');
return data;
}
}
});
のDataTableのドキュメントと私はこのSOポスト(DataTables Ultimate date/time sorting plug-in not working with Intl formats)で見つかった詳細の両方によると、私は私の中<th />
要素のクラス名としてdate_sortable
を追加しましたHTMLですが、私のconsole.log[...]
エントリは決して実行されないので、render
関数が呼び出されていないようです。私は生成されたHTMLでクラスが私の<th />
要素にあり、表示されている日付が適切な形式('n/j/Y'
、PHP)であることが分かります。
すべてが正しく設定されているので、ヒント/ポインタはここにありますか?日付の順序は、本質的にむしろランダムであるように見えます。エントリは中央に表示される1/6/2016などの日付を持ちます(スクリーンショットを参照)。これはまったく意味がありません。
私はこのテーブルが〜2,055レコードを表示していると言いますので、それはおそらくパフォーマンスですか?現在、APIコールはロードされていないため、すべてのレコードは生成されたHTML内に単一のファイルとして格納されます。
ランダムではなく、数値ではなく文字列のソートです。この例では、2、2、2、6、7の順にソートされています。 –