2013-05-06 91 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}); 
相關問題