本文介绍了在 jquery DataTables 中从渲染中跳过一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果在初始化期间满足条件,我想跳过行渲染,但是我不知道将它放在哪里.
I want to skip row rendering if a condition is met during its initialization, however I dont know where exactly to place it.
我应该把它放在 fnCreatedRow
还是 fnPreDrawCallback
中?
我该怎么做?
Should I put it in fnCreatedRow
or fnPreDrawCallback
?
And how can I do that?
这是我的代码:
var users_tbl =$('#users_tbl');
users_tbl.DataTable({
"deferRender": true,
"autoWidth": false,
//for reinitialisation purpose
destroy: true,
"aLengthMenu": [[20, 40, 50, 100, -1], [20, 40, 50, 100, "All"]],
"order": [[ 0, "DESC" ]],
"ajax" : {
url : Main.Vars.host + "settings/get_users",
type : "GET",
},
"aoColumnDefs": [
{ "sWidth": "5%", "aTargets": [ 0 ] },
{ "sWidth": "20%", "aTargets": [ 1 ] },
{ "sWidth": "25%", "aTargets": [ 2 ] },
{ "sWidth": "15%", "aTargets": [ 3 ] },
{ "sWidth": "5%", "aTargets": [ 4 ] },
],
"fnCreatedRow" : function( nRow, aData, iDataIndex ){
$(nRow).addClass('item-context');
return false;
},
"fnPreDrawCallback": function( oSettings ) {
console.log(oSettings);
},
"columns": [
{
"data": "id",
},
{
"data": "username",
},
{
"render": function(data,type,row,meta) {
var owner = row.pnp_info.first_name + " " + row.pnp_info.last_name;
return owner;
}
},
{
"data": "created_on",
},
{
"render": function(data,type,row,meta) {
return row.active == 1 ? "YES" : "NO";
}
},
],
sPaginationType: "full_numbers",
});
推荐答案
对于 fnCreatedRow
来说已经太晚了,对于 fnPreDrawCallback
来说,你最终会取消表格的渲染.你有两种不同的方式:
For fnCreatedRow
it is too late, and for fnPreDrawCallback
you just end up cancelling rendering of the table. You have two different ways :
1) 清理 ajax 中的 JSON.dataSrc
回调:
var table = $('#example').DataTable( {
ajax : {
url : 'test.json',
dataSrc: function(json) {
var rows = [];
for (var i=0;i<json.data.length;i++) {
//skip rows "if a condition is met"
//here just any rows except row #1
if (i>0) rows.push(json.data[i]);
}
return rows;
}
}
....
})
2) 在 xhr上清理 JSON代码>
事件:
table.on('xhr.dt', function (e, settings, json, xhr) {
//manipulate the json directly, no return needed
//delete row #1, same as above
json.data.splice(0,1);
});
这两个例子都假设你已经在(简化的)表单上使用了格式良好的 JSON
Both examples is under assumption that you have wellformed JSON on the (simplified) form
{
"data": [
{
"id": "2423",
"username" : "joe"
},
{
"id": "4321",
"username" : "gordon"
}
]
}
这篇关于在 jquery DataTables 中从渲染中跳过一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!