我正在使用数据表和服务器端处理(Django)。
我有一个单独的textfield,在表已经呈现之后,我使用它自定义筛选DataTable中的数据。
以下操作很好(我想自定义筛选列):
var table = $('#problem_history').DataTable( {
"bJQueryUI": true,
"aaSorting": [[ 1, "desc" ]],
"aoColumns": [
// various columns here
],
"processing": true,
"serverSide": true,
"ajax": {
"url": "/getdata",
"data": {
"friend_name": 'Robert'
}
}
} );
所以在页面加载(DataTable的初始加载)时,它很好地过滤了'Robert'。但现在我想以编程方式更改数据以筛选“friend_name”==“sara”
我已经尝试了以下操作,filtereddata
有一个正确的筛选对象,但是表本身并没有用新的筛选器重新绘制。
var filteredData = table.column( 4 ).data().filter(
function ( value, index ) {
return value == 'Sara' ? true : false;
}
);
table.draw();
我也试过这个但没有运气:
filteredData.draw();
如何实现此目标?
谢谢你的帮助。
下面是一个很好的解释,说明如何执行:https://datatables.net/reference/option/ajax.data
我当前正在使用以下代码:
"ajax": {"url":"/someURL/Backend",
"data": function ( d ) {
return $.extend( {}, d, {
"parameterName": $('#fieldIDName').val(),
"parameterName2": $('#fieldIDName2').val()
} );
}
}
您可以通过执行以下操作来调用它:
$('#myselectid').change(function (e) {
table.draw();
});
如果要通过单击按钮提交,请更改。将
更改为。单击
并确保ID指向HTML中按钮的ID
你就快搞定了。您只需将筛选器var分配给datatables请求中传递的数据参数:
"ajax": {
"url": "/getdata",
"data": {
"friend_name": $('#myselectid').val();
}
}
要筛选数据,只需在select change事件上调用draw()
$('#myselectid').change(function (e) {
table.fnDraw();
});