3

(このトピックに関する多くの回答を見ましたが、この質問には当てはまりません。)

DataTables には、ユーザーが各列の上/下の三角形のアイコンをクリックして、昇順または降順で並べ替える機能があります。次のようにデータをロードしました

        oTable.fnAddData( ["Bogus data","1,541,512","12.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","3,541,512","2.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","541,512","1.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","2,541,512","32.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","741,512","3.5%","0","0","0"]);
        oTable.fnAddData( ["A Bogus data","41,512","1.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","2,541,512","12.5%","0","0","0"]);
        oTable.fnAddData( ["Z Bogus data","1,541,512","12.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","3,541,512","2.5%","0","0","0"]);
        oTable.fnAddData( ["La Bogus data","541,512","1.5%","0","0","0"]);
        oTable.fnAddData( ["The Bogus data","2,541,512","32.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","741,512","3.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","41,512","1.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","2,541,512","12.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","1,541,512","12.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","3,541,512","2.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","541,512","1.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","2,541,512","32.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","741,512","3.5%","0","0","0"]);
        oTable.fnAddData( ["Bogus data","41,512","1.5%","0","0","0"]);

列番号 2 では、上向き/下向きの三角形をクリックすると、数値がアルファベット順に処理されます。文字を数字として扱い、2列目の上/下矢印が適切な方法でトリガーされるように調整するにはどうすればよいですか。次の初期化を使用してみました:

oTable = $('.utable').dataTable( {
"aoColumns": [{ sWidth: '60%' },{sWidth: '30%', "sType": "numeric"},{ sWidth: '10%' }],
"sDom": 'rt',
"sScrollY":"200px",
"bPaginate":false,
"bFilter":false,
"bInfo": false});  

これは列をロックするだけで、その列のヘッダーで上/下アイコンは機能しません。

4

4 に答える 4

4

あなたの問題は、数字がそのように認識されていないことです。たとえそうであったとしても、数字のコンマはおそらくソート機能をオフにするでしょう(おそらく適切に削除されないため)。

選択肢の 1 つは、数値を適切に処理する独自の並べ替え関数を実装することです。必要なことを行う例を次に示します。

http://live.datatables.net/oborug/2/edit

PS -- 関連ドキュメントは次のとおりです: http://datatables.net/development/sorting

于 2013-03-06T21:57:47.220 に答える
2

技術的には、列番号 2 には文字列 (1,000) - コンマ付きの数字が含まれ、列 3 - パーセンテージ付きの数字も含まれます)。最善の方法は、データを整数としてデータ テーブルに渡し (コンマと % なし)、mRenderオプションを使用してコンマとパーセンテージを追加するカスタム フォーマッタを作成することです ( http://www.datatables.netを参照)。 /usage/columns )。

データにカスタム書式を追加する場合は、表示されたデータではなく、基になるデータを並べ替えソースとして使用するオプションを設定することも忘れないでください。

于 2013-03-06T21:55:22.320 に答える
0

並べ替えの関数を定義する必要があります(選択による並べ替えまたは挿入による並べ替えを使用してみてください)。データ変数を配列にストックして計算を実行してください。そうでない場合は、データを使用して直接並べ替えを実行できます。

于 2013-03-06T21:31:18.670 に答える
0

こんにちはparseFloat、メソッドを使用して置換し、この例を使用してこれを作成しましたhttp://datatables.net/release-datatables/examples/basic_init/multi_col_sort.html

jQuery.fn.dataTableExt.oSort["string-nbr-asc"]  = function(x,y) {return ((parseFloat(x.replace(",","")) < parseFloat(y.replace(",",""))) ? -1 : ((parseFloat(x.replace(",","")) > parseFloat(y.replace(",",""))) ?  1 : 0));};

jQuery.fn.dataTableExt.oSort["string-nbr-desc"] = function(x,y) {return ((parseFloat(x.replace(",","")) < parseFloat(y.replace(",",""))) ?  1 : ((parseFloat(x.replace(",","")) > parseFloat(y.replace(",",""))) ? -1 : 0));};

10列があり、使用するsort 7,8,9ような数値を7,081 1,925.49使用したい場合

"aoColumns":[null,null,null,null,null,null,{ "sType": "string-nbr" },{ "sType": "string-nbr" },{ "sType": "string-nbr" },null]
于 2014-01-03T02:47:40.850 に答える