1

私のjqGridには、Duration Span列のような別の値によって値が生成される特別な列が含まれており、その実際の値は3690秒のような秒単位であり、フォーマットされた文字列「時:分:秒」に変換する必要があります。は「1:1:30」です。さて、ソートでうまく機能するようにしたいので、これを処理するためのカスタマイズ関数を作成します。

1、次のコード フラグメントは列の定義です。

{
    name : 'time',
    index : 'time',
    align: 'center',
    width :  '12%',
    sorttype : sortTimeFuc
} 

2、次のコード フラグメントはソート関数です。

var sortTimeFuc = (function(cell) {
    var a = cell.split(':');
    var value = parseInt(a[2]) + parseInt(a[1]) * 60 + parseInt(a[0]) * 3600;
    return value;
});

しかし、以下のように正しく動作しません:

ここに画像の説明を入力

誰か助けてくれませんか?本当にありがとう。

4

2 に答える 2

1

あなたはいくつかの間違いを犯しているように私には思えます。まず、関数の括弧を削除する必要があります。不要な括弧が関数の呼び出しに続く場合があります。あなたのコードで見られる 2 番目の最も重要なエラーは、2 番目のパラメーター 10 なしでparseIntを使用していることです。最後のエラーはwidth : '12%'. jqGrid は、幅内の '%' をサポートしていません。その代わりに、合計グリッドを使用しwidth: 12て指定するか、 を使用できます。このオプションはデフォルトのオプションであるため、jqGrid の合計幅と列のプロパティに基づいて列の幅をスケーリングし、列間の比率を定義します。widthautowidth: trueshrinkToFit: truewidth

したがって、結果のコードは次のようになります

{
    name: 'time',
    align: 'center',
    width: 12,
    sorttype: function (cell) {
        var a = cell.split(':');
        return parseInt(a[2], 10) + parseInt(a[1], 10) * 60 +
            parseInt(a[0], 10) * 3600;
    }
}

カスタムソートの非常に近い実装の例として、回答を参照してください。

于 2013-02-05T07:22:01.403 に答える
0

マージされた時間文字列は文字列の並べ替え条件を満たしているため、この列の並べ替えタイプを「テキスト」に設定するだけです。問題が解決しました。

于 2013-02-05T07:21:43.280 に答える