我正在使用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值在init之后不会改变,但实际上DataTables允许通过fnSettings方法进行外部设置操作,fnSettings方法明确记录它是用于“外部操作”。
有关如何解决此问题的任何想法?
答案 0 :(得分:1)
好的找到了解决方案 - 使用aoColumnDefs而不是aoColumns,并在aTargets数组中指定列目标:
var aoColumnDefs = [{
"mRender": function (val, type, row) {
return "xxx";
},
"aTargets":[2]
}];
mytable.dataTable({aoColumnDefs:aoColumnDefs});