YADCF multi_select 过滤器与服务器端
YADCF multi_select filter with server side
使用 AngularJS,我有一个 DataTable() 在服务器端模式下工作,使用 YADCF 过滤器。
在 ServerSide 上工作时是否可以使用 multi_select
过滤器(选择或选择 2)?我可以手动引入搜索的参数吗?在这种情况下,我想在第 6 列 ("estado") 上使用该过滤器,这意味着进程的 "The state"。
代码来自myApp.controller
var table = $('#tbl').DataTable({
stateSave: true,
stateDuration: -1,
//sRowSelect: "multi",
language: sharedProperties.getLanguageDatatable(),
dom: '<"toolbar">T<"clear">lfrtip',
"columnDefs": [
{ "data": "processosId", "targets": 0, "visible": false, "searchable": false },
{ "data": "utilizadoresId", "targets": 1, "visible": false, "searchable": false },
{ "data": "entidadesId", "targets": 2, "visible": false, "searchable": false },
{ "data": "numero", "targets": 3 },
{ "data": "nomeEntidade", "targets": 4, "visible":entidadeCol },
{ "data": "nomeUtilizador", "targets": 5, "visible":utilizadorCol },
{ "data": "estado", "targets": 6 },
],
serverSide: true,
ajax: {
"url": urlProcessos,
"error": function (reason) {
if (reason.status == 401) { // Not Authorized
self.location = '#/logout';
}
}
},
});
yadcf.init(table,
[
{ column_number: 3, filter_type: 'text', filter_default_label: "" },
{ column_number: 4, filter_type: 'text', filter_default_label: "" },
{ column_number: 5, filter_type: 'text', filter_default_label: "" },
{ column_number: 6, filter_type: 'multi_select', filter_default_label: "", select_type:'chosen' },
]);
$scope.newProcess = function () {
table.columns(6).search('Novo').draw();
}
$scope.openProcess = function () {
table.columns(6).search('Aberto').draw();
}
我第一次过滤的时候,因为它是服务器端只能访问那个状态的进程,所以不可能选择一个或多个状态...
如果你想触发 yadcf 过滤器你最好使用 yadcf api
我建议你更换
table.columns(6).search('Novo').draw();
和
table.columns(6).search('Aberto').draw();
像这样
yadcf.exFilterColumn(oTable, [[0, ['Novo']]], true);
和
yadcf.exFilterColumn(oTable, [[0, ['Aberto']]], true);
如果你想过滤多个值,你可以添加更多到数组,像这样
yadcf.exFilterColumn(oTable, [[0, ['Novo', 'Aberto']]], true);
阅读更多关于 exFilterColumn api
请注意,在过滤已加载的 ajax 源数据表时应使用第三个 true
参数(尚无相关文档)
使用 AngularJS,我有一个 DataTable() 在服务器端模式下工作,使用 YADCF 过滤器。
在 ServerSide 上工作时是否可以使用 multi_select
过滤器(选择或选择 2)?我可以手动引入搜索的参数吗?在这种情况下,我想在第 6 列 ("estado") 上使用该过滤器,这意味着进程的 "The state"。
代码来自myApp.controller
var table = $('#tbl').DataTable({
stateSave: true,
stateDuration: -1,
//sRowSelect: "multi",
language: sharedProperties.getLanguageDatatable(),
dom: '<"toolbar">T<"clear">lfrtip',
"columnDefs": [
{ "data": "processosId", "targets": 0, "visible": false, "searchable": false },
{ "data": "utilizadoresId", "targets": 1, "visible": false, "searchable": false },
{ "data": "entidadesId", "targets": 2, "visible": false, "searchable": false },
{ "data": "numero", "targets": 3 },
{ "data": "nomeEntidade", "targets": 4, "visible":entidadeCol },
{ "data": "nomeUtilizador", "targets": 5, "visible":utilizadorCol },
{ "data": "estado", "targets": 6 },
],
serverSide: true,
ajax: {
"url": urlProcessos,
"error": function (reason) {
if (reason.status == 401) { // Not Authorized
self.location = '#/logout';
}
}
},
});
yadcf.init(table,
[
{ column_number: 3, filter_type: 'text', filter_default_label: "" },
{ column_number: 4, filter_type: 'text', filter_default_label: "" },
{ column_number: 5, filter_type: 'text', filter_default_label: "" },
{ column_number: 6, filter_type: 'multi_select', filter_default_label: "", select_type:'chosen' },
]);
$scope.newProcess = function () {
table.columns(6).search('Novo').draw();
}
$scope.openProcess = function () {
table.columns(6).search('Aberto').draw();
}
我第一次过滤的时候,因为它是服务器端只能访问那个状态的进程,所以不可能选择一个或多个状态...
如果你想触发 yadcf 过滤器你最好使用 yadcf api
我建议你更换
table.columns(6).search('Novo').draw();
和
table.columns(6).search('Aberto').draw();
像这样
yadcf.exFilterColumn(oTable, [[0, ['Novo']]], true);
和
yadcf.exFilterColumn(oTable, [[0, ['Aberto']]], true);
如果你想过滤多个值,你可以添加更多到数组,像这样
yadcf.exFilterColumn(oTable, [[0, ['Novo', 'Aberto']]], true);
阅读更多关于 exFilterColumn api
请注意,在过滤已加载的 ajax 源数据表时应使用第三个 true
参数(尚无相关文档)