0

MSSQL Studio でクエリを実行すると、正しい順序で結果が返される SQL クエリがあります。

私は Datatables.net の Datatables を使用していますが、並べ替えの問題を除けば、すべてがうまく機能しています。最初の列にいくつかのプロパティがあり、これらを次のように並べたいと思います。

1
1a
1b
2
3
4a
5
etc

ただし、返されるのは次のようなものです。

1
10
100
11
11a

さまざまな投稿を調べましたが、何も機能していないようで、これは datatables プラグインからトリガーする必要があると思いますが、何も見つかりません。

誰かがアドバイスできますか?

4

1 に答える 1

0

データには数字と文字が含まれているため、デフォルトでは文字列として並べ替えられます。データ型を並べ替えるための独自のプラグインを作成する必要があります。 プラグインの作成方法とテーブルでの使用方法については、ここここをご覧ください。

編集:今日、データテーブルのものを操作する時間がありました。それでも解決策が必要な場合は、次のようにします。

//Sorting plug-in
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
    //pre-processing
    "numchar-pre": function(str){
        var patt = /^([0-9]+)([a-zA-Z]+)$/;    //match data like 1a, 2b, 1ab, 100k etc.
        var matches = patt.exec($.trim(str));
        var number = parseInt(matches[1]);     //extract the number part
        var str = matches[2].toLowerCase();    //extract the "character" part and make it case-insensitive
        var dec = 0;
        for (i=0; i<str.length; i++)
        {
         dec += (str.charCodeAt(i)-96)*Math.pow(26, -(i+1));  //deal with the character as a base-26 number
        }
        return number + dec;       //combine the two parts
    },

    //sort ascending
    "numchar-asc": function(a, b){
        return a-b;
    },

    //sort descending
    "numchar-desc": function(a, b){
        return b-a;
    }
});

//Automatic type detection plug-in  
jQuery.fn.dataTableExt.aTypes.unshift(
   function(sData)
   {
        var patt = /^([0-9]+)([a-zA-Z]+)$/;
        var trimmed = $.trim(sData);
        if (patt.test(trimmed))
        {
            return 'numchar';
        }
        return null;
    }
 );

自動型検出機能を使用して、データ型を自動的に検出したり、列のデータ型を設定したりできます。

"aoColumns": [{"sType": "numchar"}]

于 2013-03-24T00:13:13.793 に答える