1

DataTables を使用してテーブルを作成しています。テーブルを初期化した後、次のように、列の 1 つをレンダリングする方法を制御するいくつかの設定を変更したいと思います。

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 メソッドを介した外部設定操作を許可しており、これは「外部操作」用であることを明示的に文書化しています。

これを解決する方法についてのアイデアはありますか?

4

1 に答える 1

1

解決策が見つかりました - aoColumns の代わりに aoColumnDefs を使用し、aTargets 配列で列ターゲットを指定します。

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