我有一个使用服务器端处理的数据表。像这样:
var table = $('#example').dataTable( {
"processing": true,
"serverSide": true,
"deferLoading": 50,
"columnDefs": [
{
"name": "a.edit",
"targets": 3,
"render": function ( data, type, full, meta ) {
return '<a class="btn btn-info" data-sid="'+data.id+'" href="'+data.url+'">Edit</a>';
}
}
]
});
如您所见,我的第3列是链接/按钮而不是原始文本。我从处理脚本返回的数据中收到ID和URL变量。
我的问题是我想绘制内置于模板的表的初始页面,而不是使用AJAX请求加载它(就像this) - 这就是我使用{{{ 1}}选项。第3列中的按钮是在我的模板中预先构建的。但是因为我使用了渲染选项,我在这些列中的HTML代码被覆盖了我在渲染选项中编写的代码。而且,由于我在初始模板中没有从AJAX请求返回数据变量,因此他们只获得deferLoading
值。
我想要的是在我的初始页面中有列#34;未触及&#34;通过渲染选项 - 仅对AJAX请求(2-3-N页)中的数据应用该渲染参数。
答案 0 :(得分:1)
尝试使用此代码,仅在data.id
不是undefined
时使用render
,即成功的AJAX请求后。
var table = $('#example').dataTable( {
"processing": true,
"serverSide": true,
"deferLoading": 50,
"columnDefs": [
{
"name": "a.edit",
"targets": 3,
"render": function ( data, type, full, meta ){
if(typeof data.id !== 'undefined'){
data = '<a class="btn btn-info" data-sid="'+data.id+'" href="'+data.url+'">Edit</a>';
}
return data;
}
}
]
});