3

私のjqGridには、「1.234,678」という形式の列があります。この列を並べ替えたいのですが、次のコードを使用しています。

{name:'ZMENG_SOR_VRKME', index:'ZMENG_SOR_VRKME', width:'5', align:'right', sorttype:'number' }

並べ替えがうまくいきません。たとえば、21,000 - 991,000 - 1.188,000 がある場合、.(ドット) を千と見なしていないと思います。結果は、991,000 - 21,000 - 1.188,000 です。

どうすればこれを解決できますか?

4

1 に答える 1

9

問題が正しく理解できた場合は、グリッドに入力されたデータの形式を変更する必要があります。入力として純粋な数値を使用formatter: "number"し、数値に千単位の区切り文字を含めるために使用する必要があります。私の意見では、それがあなたの問題を解決する最良の方法です。grid.locale-XX.jsロケールに対応する千単位の区切り記号が使用される正しい言語ファイルを使用できます。decimalSeparatorまたは、 とthousandsSeparatorofを使用しformatoptionsて、カスタムの小数点記号と桁区切り記号を指定することもできます。

または、セルに表示されるテキストを数値に変換する unformatter (ここでunformat説明する関数) を提供することもできます。うまくいくはずだと思います。

もう1つの可能性は、カスタムソートの使用です。sorttypeデータの「正規化された」バージョンを返す関数として定義する必要があります。ソート中に元のデータの代わりに「正規化された」データが使用されます。コード例については、回答これを参照してください。

更新: 無料の jqGridtemplate: "integer"は、 、number: "number"template: "integerStr"number: "numberStr"およびその他のようないくつかの標準テンプレートを提供します。したがって、使用することができます

{name: "ZMENG_SOR_VRKME", width: 50, template: "numberStr" }

これはの使用法と同等です

{name: "ZMENG_SOR_VRKME", width: 50,
    formatter: "number", align: "right", sorttype: "number",
    searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"] } }
于 2013-07-02T13:52:26.730 に答える