Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is my jquery datatables createdrow function not working?

I am trying to use the Datatables Rows Created Callback to modify the data in the row before drawing it. What I am trying to do is replace all &lt; and &gt; with '<' and '>' so I can put a line break in each cell and have text on separate lines. '\n' or linefeed does not work.

var oTable = $('#table').DataTable( { 
      "createdRow" : function( row, data, index) {
         console.log( 'DATA WAS ' + data[0]);
         data[0] = data[0].replace(/&lt;/g,'<').replace(/&gt;/g,'>');
         console.log( 'DATA IS ' + data[0]);
       }

in the console I can see the data being modified correctly. But its not actually modifying the table. Is there a way to do this? or is the createdRow callback called after the row has already been drawn?

like image 926
user1768233 Avatar asked Sep 30 '22 13:09

user1768233


1 Answers

Yep, correct. createdRow callback is only called after the row has already been drawn. Instead of fixing your current code, I will show you how to do it using the proper (?) way by using column defs :D Also, I'd think/hope there was something somewhere that would convert your &lt; stuff automatically.

var oTable = $('#table').DataTable( { 
    "columnDefs": [ {
        "targets": 0,
        "render": function(data, type, row, meta) {
            html = data.replace(/&lt;/g,'<').replace(/&gt;/g,'>');
            return html;
        },
    ],
}
like image 58
ZenCodr Avatar answered Oct 09 '22 17:10

ZenCodr