Фильтровать AJAX-ответ для DataTable - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть функция DataTable.parentObjData исходит из другого места и должен фильтровать это DataTable, чтобы включать только записи, где idea_id равно parentObjData.

function BuildExampleDataTable(parentObjData, tableCounter) {
    oInnerTable = $("#example_" + tableCounter).DataTable({
        autoWidth: true,
        serverSide: true,
        processing: true,
        ajax:
        {
            url: "/platform/api/?format=datatables",
            type: "get",
            data: function (d) {
                var searchData =
                    {
                        idea_id: parentObjData,
                        draw: d.draw,
                        length: d.length,
                        start: d.start,
                        order: d.order,
                        columns: d.columns,
                        orderbyfield: d.columns[d.order[0].column].data
                    };
                d.sData = JSON.stringify(searchData);
                return d.sData;
            }
        },
        columns: [
           { data: 'idea_id', name: "idea_id.id"},
           { data: 'comment' },
        ],
    });
}

/platform/api/?format=datatables отвечает:

{"data":[{"idea_id":1,"comment":"test comment"},{"idea_id":1,"comment":"test comment again"},{"idea_id":2,"comment":"another test comment?"}],"recordsFiltered":3,"recordsTotal":3,"draw":1}

parentObjData прибывает в функцию правильно, но DataTable не фильтруется (он показывает все три записи).Как изменить часть data вызова ajax, чтобы отфильтровать таблицу данных?

1 Ответ

0 голосов
/ 18 апреля 2019

вот мой код, вы можете следовать ему

"ajax": {
        "url": contextRoot + "manage/callbackMessage/datatables",
        "data": function (d) {
            var req = {
                "dir": "",
                "colName": "",
                "draw": d.draw,
                "length": d.length,
                "start": d.start
            };
            var queryReq = {
                "idea_id": parentObjData
            };

            var columns = d.columns;
            var order = d.order;
            if (order.length > 0) {
                var orderFirst = order[0];
                var colIndex = orderFirst.column;
                req.dir = orderFirst.dir;
                req.colName = columns[colIndex].name || columns[colIndex].data;
            }
            return $.extend({}, req, queryReq);
        }
    }

в коде вашего сервера вы можете анализировать dir colName draw и idea_id все, что вы хотите

Подробнее о https://datatables.net/reference/option/ajax.data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...