ここにはこの種の問題に対する答えがたくさんあることは知っていますが、それらにはすべて独特の状況があるようです。ただし、私の場合は、日付に奇妙なことをしていないため、非常に簡単なことですが、日付の並べ替えを機能させることができません。
JSON から取得したデータを次に示します (これは会社のプロジェクトであるため、部分的に編集されています)。
{"rows": [
{"cell": [ "140935", ..., "19/06/2013 3:17:02 PM", ... ]},
{"cell": [ "140894", ..., "19/06/2013 10:01:57 AM", ... ]},
{"cell": [ "140803", ..., "18/06/2013 11:50:01 AM", ... ]},
{"cell": [ "140008", ..., "10/06/2013 12:44:44 PM", ... ]},
{"cell": [ "138280", ..., "28/05/2013 11:57:19 AM", ... ]},
{"cell": [ "118286", ..., "15/11/2012 7:13:19 PM", ... ]}
]}
ご覧のとおり、サーバーから取得すると、既にソートされています。問題は、テーブルで並べ替えを使用すると、台無しになり、2013 年 5 月 28 日の日付が 6 月の日付よりも「遅く」設定されることです。これがスクリーンショットです。
そして、これを生成するために使用するjqGridコードを次に示します(簡潔にするために部分的に編集しましたが、この問題に影響を与えるものを削除したとは思いません)。
最初に列名と列モデルを変数として設定し、整理します。
cnames = ['ID', _company, _location, ... _createdon..],
cmodel = [
{ name:'ticketId', index:'ticketId', key:true, width:60, align:'center',
sorttype:'int', fixed:true, resizable:false, editrules:{ edithidden:true }
},
{ name:'company', index:'company', width:117, editrules:{edithidden:true} },
{ name:'location', index:'location', width:94, editrules:{edithidden:true} },
...
{ name:'CreatedOn', index:'CreatedOn', width:85, sorttype:'date',
datefmt:'m/d/Y h:i:s A', fixed:true, editrules:{edithidden:true, date:true} },
...
]
したがって、日付形式m/d/Y h:i:s A
は、サーバーから取得した日付データと一致します15/11/2012 7:13:19 PM
。
次に、このようにjqGridをロードします
ticketsTable = tableWrap.jqGrid({
url: urlTicketHandler + '?method=GetTickets&' + filtersData,
mtype: 'GET',
datatype: 'json',
colNames: cnames,
colModel: cmodel,
height: 'auto',
rowNum: 1000,
autowidth: true,
sortname: 'priority',
sortorder: 'desc',
pgbuttons: false,
pginput: false,
pgtext: '',
viewrecords: true,
altRows: true,
loadonce: true,
scrollOffset: 0,
hidegrid: false,
caption: _tickets,
toppager: true,
pager: '#ticketsList_footer',
prmNames: {page:null, rows:null, search:null},
viewsortcols: [true,'vertical',true],
recordtext: _showingxt + ' {2} ' + _tickets,
gridview: true,
ignoreCase: true,
multiselect: hasFullAccess,
loadComplete: function(d) {
if (firstLoad) {
firstLoad = false;
if (isColState && myColumnsState.permutation.length) {
$(this).jqGrid("remapColumns", myColumnsState.permutation, true);
}
}
saveColumnState.call($(this), this.p.remapColumns);
}
});
ここで問題を引き起こす可能性があると思われる唯一のことは、列の保存部分です (関数全体をここに含めたわけではありませんが、実際に関連があるかどうかはわかりません。jqGrid 自身のサイトから取得しました)。
他の列で行っている書式設定を省略しましたが、日付列には触れていません。テーブルにカスタム ボタンを追加する関数もいくつか省略しましたが、これも問題ではないと思います。
私がここに欠けているものはありますか?