Как применить настраиваемый фильтр к JQuery DataTable при инициализации? - PullRequest
0 голосов
/ 19 июня 2020

Я работаю над веб-приложением MVC, которое использует библиотеку jquery DataTables для отображения некоторых клиентов и связанных данных о них. Я добавил настраиваемый фильтр с помощью флажка для сортировки клиентов по тому, активны они или нет (просто проверяет значение типа bool для каждой строки).

Флажок работает и сортирует данные, но работает только после того, как меняли пару раз.

            $.fn.dataTable.ext.search.push(
                function (settings, data, dataIndex) {
                    var isActiveFilter = $('#isActiveFilter').is(':checked');
                    if (isActiveFilter) { // takes out any rows where IsActive is False
                        if (data[13] == 'False') {
                            return false;
                        }
                    }
                    return true;
                }
            );

            $(document).ready(function () {
                var table = $("#example").DataTable({
                    //There must be an entry for each column, null if nothing to add
                    "columns": [ //expand button - 0
                        {
                            "className": 'details-control',
                            "orderable": false,
                            "data": null,
                            "defaultContent": ''
                        },
                        null, // First name - 1
                        null, // last name - 2
                        null, // organization - 3
                        null, // status - 4
                        null, // email - 5
                        null, // phone number - 6
                        { "visible": false }, // sys id - 7
                        { "visible": false }, // created date - 8
                        { "visible": false }, // last updated date - 9
                        null, // Contact Event Created date - 10
                        { "visible": false }, // Contact Event Note - 11
                        { "visible": false }, // Contact Event OutcomeSysID - 12
                        { "visible": false }, // customer IsActive - 13
                    ],
                    "order": [[9, "asc"]],
                    "columnDefs": [
                        { "width": "20px", "targets": 0 }
                    ],
                    initComplete: function () {
                        $("div.dataTables_length")
                            .append('<span style="display:inline-block; width: 20px;"></span><input type="checkbox" id="isActiveFilter" checked="checked"/> <label for= "isActiveFilter" > Active Only</label >');
                    }
                });

                // event listener for IsActive filter
                $('#isActiveFilter').on('change', function (e) {
                    table.draw()
                });
            });

Я знаю, что фильтр в настоящее время настроен только на перерисовку таблицы при «изменении», но я не уверен, как его вызвать, чтобы таблица фильтровалась с помощью IsActive при инициализации страницы нагрузки.

...