2013-05-06 42 views
1

我正在使用DataTables创建表。我初始化表之后,我想改变一些控制如何在一列被渲染,像这样设置:DataTables mRender“对象不是函数”错误

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值初始化后,也不会改变,但实际上数据表允许外部设置操作通过fnSettings方法明确证明它是用于“外部操纵”的。

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

回答

1

确定找到了解决方案 - 使用aoColumnDefs代替aoColumns,并且在aTargets阵列指定列目标:

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