2016-09-27 6 views
0

私はexampleのようなチェックボックスでデータテーブルを持っています。CSSテーブルでデータテーブル内の選択した行を並べ替える

チェックボックスは、CSS :afterおよび:before疑似要素を使用して作成されるため、それらを保持する列には値がありません。

ユーザーがボタンをクリックしたときにプログラムによっていくつかの行が選択されていますが、選択した行がテーブルの上部に表示されます。これは主に、特に選択した行が非表示のページにあるときに何か起こっていることをユーザーに見せるためです。 https://jsfiddle.net/b22kx27s/2/

私が先頭に選択された行をもたらすために、カスタムソート関数に探してみましたが、列には値がないので、それを行う方法を見つけ出すことができませんでした。ここで

はフィドルです。最初の列の columnDefsorderDataType: 'dom-checkbox'を使用

$.fn.dataTable.ext.order['dom-checkbox'] = function (settings, col) 
{ 
    return this.api().column(col, {order:'index'}).nodes().map(function (td, i) { 
    return $(td).closest('tr').hasClass('selected') ? '1' : '0'; 
    }); 
} 

注文することを可能にする:

+0

その列で何らかのデータが変更されていないと、チェックボックスをオンにしてデータテーブルを並べ替える方法がわかりません。 (これらのチェックボックスを達成するために:beforeと:afterを巧妙に使用!) –

+0

cale_bと同意する...プラグインの内部がカスタムソートを行うときに行データを参照できるどこかの状態を保存しなければならない。プラグインデータ以外のデータストアに格納することもできますが、それはやり方がやや難しくなります – charlietfl

答えて

1

this pageを見た後、私は、列ごとに、チェックが各セルの行は、selectedクラスを持っている場合、その次関数を使用しました選択によって。 https://jsfiddle.net/s65tjv0v/8/

0
$.fn.dataTable.ext.order['dom-checkbox'] = function (settings, col) 
{ 
    return this.api().column(col, {order:'index'}).nodes().map(function (td, i) { 
    return $('input', td)[1].checked ? '1' : '0'; 
    }); 
} 

選択によって注文することができます最初の列のcolumnDefsorderDataType: 'dom-checkbox'の使用:

はここで更新フィドルです。

関連する問題