Я не могу фильтровать или искать - PullRequest
0 голосов
/ 24 января 2019

У меня большая проблема, и я передал ей последние 2 часа.

У меня есть эта DataTabe:

const tableauAjoutCandidat = $("#tableauAjoutCandidats").DataTable({
    select: "multi",
    searching: false,
    columns: [
        {
            name: "nomPrenom",
            title: "NOM Prénom",
            data: "nom"
        },
        {
            name: "dateNaissance",
            title: "Date de naissance",
            data: "datenaissance",
            render: function(data) {
                return moment(data, 'YYYY-MM-DD').format('DD/MM/YYYY');
            }
        },
        {
            name: "besoins",
            title: "Besoins",
            data: "besoins"
        },
        {
            name: "epr",
            title: "EPR",
            data: "epr",
            render: function(data) {
                if (data == false) {
                    return '<input class="checkboxEPR" type="checkbox" value="" />';
                } else {
                    return '<input class="checkboxEPR" type="checkbox" value="" checked />';
                }
            }
        },
        {
            name: "demande",
            title: "Demande",
            data: 'demande'
        }
    ],
    ajax: {
        url: Routing.generate("exercicepratique_candidats_potentiels", {epId: epId}),
        dataSrc: 'candidats'
    },
    columnDefs: [
        { targets: 1, "type": "date-euro" },
    ]
});

В этой DataTabla, последнем столбце "Demande",содержат TRUE или FALSE, и я хочу отфильтровать, чтобы видеть строки с TRUE, когда флажок снят, и видеть все строки, когда он установлен.

Итак, я пробовал несколько вещей.
Сначала я пытаюсь сделать это с помощью фильтра, например:

tableauAjoutCandidat.column('demande:name').data().filter(function (value, index) {
    const checked = $('#filtreDemandeConvocationEP').is(':checked');
    if (!checked && value != true) {
        return false;
    }
    return true;
});

$('#filtreDemandeConvocationEP').on('change', function() {
    tableauAjoutCandidat.draw();
)};

, но это совсем не работает ...

Затем я пытаюсь сделать это с помощьюищите, как это:

$('#filtreDemandeConvocationEP').on('change', function() {
    const checked = $('#filtreDemandeConvocationEP').is(':checked');
    if (!checked) {
        tableauAjoutCandidat.column('demande:name').search('true').draw();
    } else {
        tableauAjoutCandidat.column('demande:name').draw();
    }
});

но с тем же результатом ...

Так что теперь я не знаю, что попробовать ... Я надеюсь, что кто-то может мне помочь.Спасибо!

PS: Извините за мой английский, как вы видите, это не мой родной язык.

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Попробуйте изменить ваш поиск на true:

"searching": true

И вместо столбца используйте столбцы.

tableauAjoutCandidat.columns(4).search('true').draw();

Надеюсь, это поможет.

0 голосов
/ 25 января 2019

Я нашел ответ!

У меня есть другая DataTable на моей странице и фильтр на ней.Это этот фильтр, который конфликтовал с моей опцией поиска в моей 2-й таблице данных.
Поэтому я добавил if в свой фильтр, чтобы он работал только на той таблице данных, которую я хочу.

0 голосов
/ 24 января 2019

Вы пробовали включить поиск?Я вижу, вы установили search = false.

В соответствии с их документами: обратите внимание, что если вы хотите использовать возможности поиска в DataTables, это должно остаться true

https://datatables.net/reference/option/searching

const tableauAjoutCandidat = $("#tableauAjoutCandidats").DataTable({
    select: "multi",
    searching: true,
    columns: [
        {
            name: "nomPrenom",
            title: "NOM Prénom",
            data: "nom"
        },
        {
            name: "dateNaissance",
            title: "Date de naissance",
            data: "datenaissance",
            render: function(data) {
                return moment(data, 'YYYY-MM-DD').format('DD/MM/YYYY');
            }
        },
        {
            name: "besoins",
            title: "Besoins",
            data: "besoins"
        },
        {
            name: "epr",
            title: "EPR",
            data: "epr",
            render: function(data) {
                if (data == false) {
                    return '<input class="checkboxEPR" type="checkbox" value="" />';
                } else {
                    return '<input class="checkboxEPR" type="checkbox" value="" checked />';
                }
            }
        },
        {
            name: "demande",
            title: "Demande",
            data: 'demande'
        }
    ],
    ajax: {
        url: Routing.generate("exercicepratique_candidats_potentiels", {epId: epId}),
        dataSrc: 'candidats'
    },
    columnDefs: [
        { targets: 1, "type": "date-euro" },
    ]
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...