1

私はjqueryデータテーブルを使用しており、チェックボックスを最初に表示して、チェックボックスを含む最初の列でデータをソートする必要があります

oTable =  $('#userTable', context).dataTable(
{
    "sAjaxSource":'/ajax/getdata/',
    "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) 
    {
        oSettings.jqXHR = $.ajax( 
        {
            "dataType": 'json',
            "type": "POST",
            "url": sSource,
            "data": params,
            "success" :  function(data)
            {
                fnCallback(data);
                fnSortBySelected();
            } 
        });
    }
});

var fnSortBySelected = function()
{
    var oSettings = oTable.fnSettings();
    var i = 0; 

    $('td:first-child input[type=checkbox]',oTable).sort(function(a, b)
    {
        if(a.checked) 
            oTable.fnUpdate( oSettings.aoData[i]._aData, i, 0);
        else 
            oTable.fnUpdate( oSettings.aoData[i+1]._aData, i, 0);
        i++;       
    });
}

お時間をいただきありがとうございます、これは私がこれまでに試したことです:

 oTable =  $('#userTable', context).dataTable({
"sAjaxSource":'/ajax/getdata/',
"fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
oSettings.jqXHR = $.ajax( {
           "dataType": 'json',
           "type": "POST",
           "url": sSource,
           "data": params,
           "success" :  function(data){
               fnCallback(data);
               fnSortBySelected();
           } 
        } );
}

 });

var fnSortBySelected = function()
{
    var oSettings = oTable.fnSettings();
    var i = 0; 

    $('td:first-child input[type=checkbox]',oTable).sort(function(a, b){
        if(a.checked) 
             oTable.fnUpdate( oSettings.aoData[i]._aData, i, 0);
        else 
             oTable.fnUpdate( oSettings.aoData[i+1]._aData, i, 0);
         i++;       
    } );


}
4

3 に答える 3

2

選択したすべてのチェックボックスに非表示の列 (最初の列のインデックス 0) を作成して、Snickers の回答を使用して作成しました。対応する非表示の列を「選択済み」に設定し、その非表示の列と名の列でテーブルを並べ替えます。

最初の列を非表示にするには

oTable.fnSetColumnVis( 0, false );

クリックされたチェックボックスごとにこれを行います

$('input[tyope=checkbox]',oTable).each(function(){
  var aPos = oTable.fnGetPosition($(this).parents('tr:first').get(0));
  oTable.fnUpdate( 'selected',aPos, 0 );
  $(this).attr('checked', true);  
});

そして電話する

oTable.fnSort( [ [0,'desc'],[2,'asc']] );

助けてくれてありがとう

于 2012-10-02T19:06:29.280 に答える
1

列に適切な aoColumnDefs を追加するだけです。

oTable =  $('#userTable', context).dataTable(
{
    "aoColumnDefs": [
        { "sSortDataType": "dom-checkbox", "aTargets": [ 0 ] }
    ],
    .....

データテーブルの列を参照してください

于 2013-02-14T11:51:08.600 に答える
0

多分あなたはこれを試すことができます:

$(document).ready(function() {
  var oTable = $('#example').dataTable();

  // Sort immediately with columns 0 and 1
  oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
} );
于 2012-10-01T16:59:57.733 に答える