1

整数、倍精度浮動小数点数、およびいくつかのダッシュ文字が混在しており、このプラグインで並べ替える必要があります。

私のデータテーブルの1つがどのように見えるかを次に示します。

5,841
-
121
-
1,102
-
-
743
-
144
9,065
-
2,230
200
6,450
209
0
1
45
54,463
162
8,222

出力を次のようにしたい:

0
1
45
121
162
144
200
209
743 
1,102 
2,230 
5,841
6,450 
8,222
9,065
54,463
-
-
-
-
-
-

または :

-
-
-
-
-
-
0
1
45
121
162
144
200
209
743 
1,102 
2,230 
5,841
6,450 
8,222
9,065
54,463

私はこのパーサーを試しましたが、うまくいきません:

jQuery.tablesorter.addParser({
  id: "commaDigit",
  is: function(s, table) {
    var c = table.config;
    return jQuery.tablesorter.isDigit(s.replace(/,/g, ""), c);
  },
  format: function(s) {
    return jQuery.tablesorter.formatFloat(s.replace(/,/g, ""));
  },
  type: "numeric"
});

$('#table_list').tablesorter({
        headers : { 
                0 : {sorter:'commaDigit'},
                1 : {sorter:'commaDigit'},
                2 : {sorter:'commaDigit'}
            }
    });

アップデート :

これが関連しているかどうかはわかりませんが、私のデータは次のように配置されています:

<tr>
<td><span>122</span><td>
<td><span>12,2</span><td>
</tr>
4

2 に答える 2

1

ダッシュを最大値として扱いたい場合は、ダッシュをその値に設定します ( Number.MAX_VALUE)。それ以外の場合は、負にすることができます ( -Number.MAX_VALUE)。ここにデモがあります。

$.tablesorter.addParser({
  id: "commaDigit",
  is: function(s, table) {
    return false; // no need to test since you're manually setting it
  },
  format: function(s) {
    return ($.trim(s) === '-') ? Number.MAX_VALUE : $.tablesorter.formatFloat(s.replace(/,/g, ""));
  },
  type: "numeric"
});
于 2012-12-19T17:16:54.413 に答える
0

あなたのスクリプトはうまくいくようです

例jsfiddle

<table>ヘッダーを含むセクションがあることを確認することをお勧めします<thead>。そうしないと、プラグインが機能しません。

asp.net と GridView を使用している場合は、明示的に使用するように設定する必要があります<thead>(参照: asp.net グリッドビューで jquery tablesorter を使用するにはどうすればよいですか? - スタック オーバーフロー)

于 2012-12-18T17:01:05.133 に答える