DataTables mRender“对象不是函数”错误

时间:2013-05-06 07:41:08

标签: javascript function object datatables

我正在使用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方法明确记录它是用于“外部操作”。

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

好的找到了解决方案 - 使用aoColumnDefs而不是aoColumns,并在aTargets数组中指定列目标:

var aoColumnDefs = [{
    "mRender": function (val, type, row) {
        return "xxx";
    },
    "aTargets":[2]
}];
mytable.dataTable({aoColumnDefs:aoColumnDefs});