1

データを変更せずに、要素の位置に基づいてセルのレンダリングを変更する必要があります。見つけたドキュメントmDatamRenderオプションで、試してみましたがfnRender(これは非推奨です)、位置はわかりますが、レンダリング中にテーブルのデータが変更されるので、疑問に思いますレンダリング時にセルの位置を取得する方法がある場合、または各変更後に自分でテーブルを再レンダリングする必要がありますか?

次のコードは私のニーズを示しています。

$(document).ready( function() {
  var oTable = $('#example').dataTable( {
    "aoColumnDefs": [ {
      "aTargets": ['_all'],
      "mRender": function ( data, type, full ) 
      {
        if (type!='display') return data;
        //HOW to get current cell indexes or DOM element here ?
        console.log(this,data,type,full);
        return data+' ttt';
      }
    } ]
  } );

  $('#example > tbody > tr').on('click','td',function() {
   console.log(this);
   var pos=oTable.fnGetPosition(this);
   var value=oTable.fnGetData(this);
   oTable.fnUpdate(value.split("").reverse().join(""),pos[0],pos[2]);
  });


  var button=$('<button>').text('clickme');
  button.click(function() { console.log(oTable.fnGetData());});
  $('body').append(button);
});

http://live.datatables.net/enirid/3/edit

fnRender を使用したサンプル:

$(document).ready( function() {
  var oTable = $('#example').dataTable( {
    "aoColumnDefs": [ {
      "aTargets": ['_all'],
      "fnRender": function ( obj, data ) 
      {
        console.log(obj,data);
        var col=obj.iDataColumn;
        //HOW to change display here without changing data of table
        return data+' '+col;
      }
    } ]
  } );


   $('#example > tbody > tr').on('click','td',function() {
   console.log(this);
   var pos=oTable.fnGetPosition(this);
   var value=oTable.fnGetData(this);
   oTable.fnUpdate(value.split("").reverse().join(""),pos[0],pos[2]);
  });


  var button=$('<button>').text('clickme');
  button.click(function() { console.log(oTable.fnGetData());});
  $('body').append(button);
});

http://live.datatables.net/opubaj/edit

4

1 に答える 1

0

試してみてくださいfnCreatedCell。datatables.net から提供されたサンプル コード スニペットを添付しました。

$(document).ready( function() {
  $('#example').dataTable( {
    "aoColumnDefs": [ {
      "aTargets": [3],
      "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
        if ( sData == "1.7" ) {
          $(nTd).css('color', 'blue')
        }
      }
    } ]
  });
} );
于 2013-01-06T11:35:55.250 に答える