1

我正在使用 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 方法进行外部设置操作,该方法明确记录了它用于“外部操作”。

关于如何解决这个问题的任何想法?

4

1 回答 1

1

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

var aoColumnDefs = [{
    "mRender": function (val, type, row) {
        return "xxx";
    },
    "aTargets":[2]
}];
mytable.dataTable({aoColumnDefs:aoColumnDefs});
于 2013-05-06T07:59:09.993 回答