javascript - DataTables mRender "object is not a function" error -


i using datatables create table. after init table, change settings control how 1 of columns rendered, so:

var st = mytable.datatable().fnsettings();  $.extend(st.aocolumns[2], {     "mrender": function (val, type, row) {         return "xxx";     }            }); 

but when load page, get: "object not function inside datatables.js:181 (marked below "this error line"):

/* cache data , set functions speed */ var mrender = ocol.mrender ? _fngetobjectdatafn( ocol.mrender ) : null; var mdata = _fngetobjectdatafn( ocol.mdata );  ocol.fngetdata = function (odata, sspecific) {     var innerdata = mdata( odata, sspecific );      if ( ocol.mrender && (sspecific && sspecific !== '') ) {         return mrender( innerdata, sspecific, odata ); <== error line     }     return innerdata; }; 

seems caching mechanism assuming mrender value not change after init, in fact datatables allows external settings manipulation via fnsettings method, explicitly documents "external manipulation".

any ideas on how resolve this?

ok found solution - use aocolumndefs instead of aocolumns, , specify column targets in atargets array:

var aocolumndefs = [{     "mrender": function (val, type, row) {         return "xxx";     },     "atargets":[2] }]; mytable.datatable({aocolumndefs:aocolumndefs}); 

Comments