どういうわけかこれは可能だと思いますが、私がやっていることはうまくいきません。
$('#campaign_creative_performance-table #show_thumb').change(function() {
var show = ($(this).is(':checked')) ? true : false,
oTable = $('#campaign_creative_performance-table table.sortable').dataTable();
oTable.fnSetColumnVis(14, show ? false : true);
oTable.fnSetColumnVis(15, show);
});
これは、列14を非表示にして列15を表示することになっており、その逆も同様です。
列見出しを入れ替えて列の幅を変更していますが、内容は変更されていません。
最初のフラグに再描画フラグを付けてみましたが、変更はありません。
追加情報: sAjaxSourceを介してデータを取得し、fnRowCallbackを介してフォーマットしています。これらの2つの列の形式は次のようになります。
$('td:eq(14)', nRow).html('<p class="limit160" title="'+aData[14]+'">'+aData[14]+'</p>');
$('td:eq(15)', nRow).html('<img src="'+aData[15]+'" />');
さらなる調査 問題は、fnRowCallbackで行われるフォーマットにあります。列14を非表示にすると、15が14になり、データは15ではなくaData 14から取得されます。したがって、フォーマッターが実際に実行している列を見つけるために実行できる何らかのテストが必要です...または$を使用しないでください('td:eq(14)')列を決定します。どうすればいいのかわかりません。
で機能しない簡単な例は、http: //jsfiddle.net/NbSCb/にあります。「clickme」がチェックされている場合、col3のデータが正しくないことに注意してください。