I have a Kendo Grid for records that have four status types: "scheduled", "open", "on execution" and "closed".
I am trying to use the checkboxes as filters so I can show only the statuses I need. I know how to set one single filter, for example, list only the "scheduled" records, or the "closed" ones. But I want to show the "scheduled" and "open" records, for example, and I haven't figured out how. What I have right now works for a single status type.
Here's some code:
$('input[type="checkbox"]').on('change', function () {
var grid = $("#grid").data("kendoGrid");
var ck_scheduled = $('#ck_scheduled').prop('checked');
var ck_open = $('#ck_open').prop('checked');
var ck_onexecution = $('#ck_onExecution').prop('checked');
var ck_closed = $('#ck_closed').prop('checked');
var allFilters = [];
if (ck_scheduled) {
allFilters.push({ logic: "or", field: "Status", operator: "eq", value: "Scheduled" });
}
if (ck_open) {
allFilters.push({ logic: "or", field: "Status", operator: "eq", value: "Open" });
}
if (ck_onexecution) {
allFilters.push({ logic: "or", field: "Status", operator: "eq", value: "On execution" });
}
if (ck_closed) {
allFilters.push({ logic: "or", field: "Status", operator: "eq", value: "Closed" });
}
grid.dataSource.filter(allFilters);
});
What I'm trying to do with this function here is: when one of the checkboxes change, it will check the 4 checkboxes state and add a filter (using the "or" logical operator) for the checked ones. In the end, apply all the filters.
But what is happening: it only applies one filter. For example, when I check the "closed" checkbox, it shows only "closed" records, ignoring the other checked checkboxes.