我正在使用DataTables创建表。初始化表格后,我想更改一些设置来控制如何呈现列之一,如下所示:
var st = mytable.dataTable().fnSettings();
$.extend(st.aoColumns[2], {
"mRender": function (val, type, row) {
return "xxx";
}
});
但是,当我加载页面时,我得到:
“对象不是DataTables.js:181内部的函数(下面用“这是错误行”标记):
/* Cache the data get and set functions for 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 ); <== this is the error line
}
return innerData;
};
似乎某些缓存机制假设在初始化后mRender值将不会更改,但实际上DataTables允许通过fnSettings方法进行外部设置操作,该方法显式记录了它用于“外部操作”。
有关如何解决此问题的任何想法?
最佳答案
确定找到了解决方案-使用aoColumnDefs代替aoColumns,并在aTargets数组中指定列目标:
var aoColumnDefs = [{
"mRender": function (val, type, row) {
return "xxx";
},
"aTargets":[2]
}];
mytable.dataTable({aoColumnDefs:aoColumnDefs});