4

私はこれの問題を知っていると思いますが、適切にアプローチする方法がわからないので、ここの誰かが同様の問題を抱えていて、なんとか修正できたことを願っています。私が持っているのは、いくつかの列を持つテーブルです。これらはすべて、1つを除いてソートが行われる限り機能します。以下は、その列のスクリーンキャプチャと、作業中の並べ替えです。

ここに画像の説明を入力してください

ご覧のとおり、英数字ロジックに従ってソートされていません。私の仮定では、名前の中には、コンマの括弧や角かっこなどの文字が含まれているものがあります。そうは言っても、datatablesプラグインを使用してこの英数字を並べ替えることができるように、この問題にどのように取り組むのでしょうか?アイデア?

****編集****

これは私が使用しているコードであり、この1つの列以外のすべてで機能します。

jQuery.fn.dataTableExt.oSort['num-asc']  = function(a,b) {
    var x = a.replace( /<.*?>/g, "" );
    var y = b.replace( /<.*?>/g, "" );
    x = parseFloat( x );
    y = parseFloat( y );
    return ((x < y) ? -1 : ((x > y) ?  1 : 0));
};

jQuery.fn.dataTableExt.oSort['num-desc'] = function(a,b) {
    var x = a.replace( /<.*?>/g, "" );
    var y = b.replace( /<.*?>/g, "" );
    x = parseFloat( x );
    y = parseFloat( y );
    return ((x < y) ?  1 : ((x > y) ? -1 : 0));
};

$(document).ready(function() {
    $('#ledger').dataTable({
        bAutoWidth: false,
        bJQueryUI : true,
        bProcessing: true,
        bServerSide: false,
        sPaginationType: "full_numbers",
        bStateSave : false,
        bUseRendered: false,
        iDisplayLength: ${entriesValue},
        sDom: mw.superadmin.datatable.relatedListDom,
        aLengthMenu: mw.superadmin.datatable.relatedListLengthMenu,
        aaSorting: [[0,'asc']],
        aoColumns: [
            null,
            { "iDataSort": 2},
            { "bVisible": false, "sType": "num"},
            { "iDataSort": 4, "bSortable": true },
            { "bVisible": false, "sType": "num"}
        ]
    });
4

4 に答える 4

3

最善の方法はaoColumnDefsを使用することだと思います。これを試して:

"aoColumnDefs": [
   {
   "sType": "string"
   }
]


それでも問題が解決しない場合は、カスタムの並べ替え関数を作成する必要があります。このリンクを参照してください。

于 2012-04-18T22:01:42.353 に答える
3

リンクを表示しているので、カスタムレンダリング関数を使用していると思いますか?

その場合は、列定義で次のように設定します。

"bUseRendered": false

これにより、レンダリングされた出力ではなく、データでテーブルが並べ替えられます。

于 2012-04-18T21:59:46.993 に答える
0

カスタムレンダリングメソッドを使用している場合は、「type」の値を使用して、実際のデータとカスタムビューを引数で区別します。以下のように、

"render": function ( data, type, full, meta ) {
    if ( type === 'display' ) {
        return '<a class="btn btn-link">' + full['description'] + '</a>';                       
    }
    return full['description'];
}

内部的には、データテーブルは、並べ替え、検索などを行うときにビューやその他の値を生成するときに、タイプを「表示」として渡します。

于 2016-11-30T07:16:53.317 に答える
0

私の場合、最初の列に画像が含まれていると、その列を並べ替えると2番目の列が正しく並べ替えられていることがわかりましたが、クリックして2番目の列を並べ替えると、正しく並べ替えられませんでした。'aTargets'を介して最初の列を無効にし、'sType'を'null'に設定することで、これを修正しました。

    "aoColumnDefs": [
        { 'bSortable': true, 'sType':"null", 'aTargets': [1, 6] },
    ]
于 2017-05-06T19:13:02.290 に答える