使用AngularJS,我有一個DataTable()工作在serverSide模式,使用YADCF過濾器。 現在我需要從HTML頁面添加一些按鈕表來過濾數據表外......JQuery Datatables外部按鈕過濾器
的代碼從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: 'text', filter_default_label: "", },
]);
$scope.newProcess = function() {
table.columns(6).search('Novo').draw();
}
$scope.openProcess = function() {
table.columns(6).search('Aberto').draw();
}
代碼:
<a href="#" >
<div class="col-sm-3" ng-click="newProcess()">
<div class="xe-label">
<strong class="num">{{contagens.novos}}</strong>
<span>Novos Processos</span>
</div>
</div>
</a>
<a href="#" >
<div class="col-sm-3" ng-click="openProcess()">
<div class="xe-label">
<strong class="num">{{contagens.abertos}}</strong>
<span>Processos Abertos</span>
</div>
</div>
</a>
<table class="table table-striped table-bordered table-hover" id="tbl" width="100%" style="width: 100%;">
<thead>
<tr class="replace-inputs">
<th>Id</th>
//and so on...
</tr>
</thead>
<tbody></tbody>
</table>
當我單擊NewProcess的按鈕,調用newProcess()函數,使用正確的過濾器向服務器發出請求,但在沒有過濾器的情況下再次發出請求...
上的提琴手所示:
感謝您的答覆,它總是很高興有筆者回答:)不幸的是,你的建議沒有鍛鍊。 ..如果我評論'yadcf.init'所有的過濾器消失(這不可能發生)。使用'yadcf.exFilterColumn(...)'不會調用WebApi,因爲它應該...只需重新加載表,不進行過濾... – NunoRibeiro
做了一些更多的測試,我意識到'exFilterColumn(...) '在第一次調用時工作(但問題依然存在,在正確的API調用另一個調用沒有過濾之後),但是如果我按另一個將激活「exFilterColumn」的按鈕,它將不起作用。我必須refreh頁面以便過濾器應用... – NunoRibeiro
我的意思是,你應該評論'yadcf.init'並嘗試使用你的'table.columns(6).search('Novo')。draw( );'看看它是如何工作的(它是否仍然發送另一個請求是在沒有過濾器之後進行的)? – Daniel