3

jqGridで「数日前」にフォーマットされた日付を並べ替えるにはどうすればよいですか?現在グリッドを並べ替えると、「11時間前」と「1日前」が区別できません。そのため、「11時間前」ではなく、「1日前」が一番上に並べ替えられます。

**このグリッドの画像を参照してください。


ここに画像の説明を入力してください

私のjqGridには次のコードがあります。RecommendationDataはJSONです。投稿された列は日付です。

$("#tblRecommendationList").jqGrid({
    data: recommendationData,
    datatype: 'local',
    colModel: [
        { name: 'Title', label: 'Title', width: 210, resizable: true },
        { name: 'Channel', label: 'Content Type', width: 120, resizable: true },
        { name: 'StatusNumber', label: 'Status', width: 120, resizable: true,
            formatter: GetStatusCode },
        { name: 'Posted', label: 'Posted', width: 120, resizable: true },
        { name: 'RecordId', label: 'RecordId', hidden: true }
    ],
    loadtext: 'Loading...',
    loadui: 'block',
    emptyDataText: "No Recommendations to display",
    shrinkToFit: true,

日付は次のように渡されます。

    ...
        returnList =
            (
                from i in responseList
                select new InQuiraRecommendation
                {
                    StatusNumber = i.statusnumber,
                    Title = i.title,
                    Text = i.text,
                    Posted = GetDaysAgo(i.dateadded),
                    CaseNumber = i.casenumber,
                    Priority = i.priority,
                    Channel = i.channel,
                    RecordId = i.recordid,

                }
            ).ToList();
    }
    return returnList;
}

GetDaysAgo()は、「2012-09-1307:00:00など/GMT」の日付形式を「数日前」の形式に変更します。

4

2 に答える 2

1

InQuiraRecommendationクラスに「dateadded」を追加し、それをグリッドの非表示フィールドとして含めてから、並べ替え列として使用します。

于 2012-10-18T17:20:58.643 に答える
1

datatype: 'local'問題は、サーバー上で準備されたデータの使用から始まります。サーバーdatatype: 'json'を使用する場合は、データの並べ替えを担当し、正しく並べ替えられたデータをjqGridに返すことができます。

もう1つの方法は、 ISO 8601GetDaysAgo形式で投稿された日付を、JavaScriptコードとしてクライアント側で「11時間前」や「1日前」などのテキストに変換するメソッドを実装することです。したがって、カスタムフォーマッタ(およびアンフォーマッタ)を使用してデータを表示できます。

もう1つのオプションは、関数として定義された列のカスタムsorttypeプロパティを定義することです。この関数は、たとえば、列で並べ替えるために「11時間前」または「1日前」というテキストの代わりに使用される時間数を返すことができます。'Posted'

これがカスタムソートへの最初のリファレンスであり、ここあなたを助けることができるいくつかのコード例があります。sorttype並べ替え可能な文字列(ISO 8601など)を使用して非表示の列を作成する場合は、カスタム並べ替えの実装(as関数の実装)を簡略化できます。関数内ではsorttype、の2番目のパラメーターごとに行の他のデータにアクセスできますsorttype(詳細については、ここを参照してください)。'Posted'このようにして、関数の結果として(非表示の列から)ISO8601表現を返すことができsorttype ます。

于 2012-10-18T18:33:38.320 に答える