Таблицы данных с разным количеством столбцов

Я загружаю данные, используя ajax, и динамически генерирую имена столбцов в моей DataTable. Мой DataTable имеет различное количество столбцов, в зависимости от выбора пользователем (есть раскрывающийся список).

Например, в раскрывающемся списке есть 2 варианта:Южная провинция а такжеСеверная провинция. Южная провинция таблица имеет 4 столбца иСеверная провинция Таблица имеет 6 столбцов.

Сценарий 1

Выбор первого пользователяЮжная провинция который имеет 4 столбца. Затем он генерирует таблицу без ошибок, но после этого, если пользователь выбираетСеверная провинция который имеет 6 столбцов, таблица не генерируется и js консольная ошибка печати, как показано ниже.

Uncaught TypeError: Cannot read property 'style' of undefined jquery.dataTables.js:3828

Сценарий 2

Выбор первого пользователяСеверная провинция который имеет 6 столбцов. Затем он генерирует таблицу без ошибок, но после этого, если пользователь выбираетЮжная провинция который имеет 4 столбца, таблица не генерируется и js консольная ошибка печати, как показано ниже.

Uncaught TypeError: Cannot read property 'mData' of undefined jquery.dataTables.js:6122

Но если обе таблицы имеют одинаковое количество столбцов, обе таблицы генерируются без ошибок.

Как я могу решить это?

Вот код JS

jQuery(document)
.ready(
function() {
    $('#province-list').change(
            function() {
                var prov = $(this).val();
                if (prov == "sp") {
                    make_SP();
                } else if (prov == "np") {
                    make_NP();
                }
            });
    function make_SP() {
    $("#dataTables-res_item")
    .dataTable(
    {
        "bDestroy" : true,
        "bProcessing" : false,
        "bServerSide" : true,
        "sAjaxSource" : "/province_list_view?p_name=sp",
        "aoColumns" : [
                {
                    "mData" : "result_date",
                    "sTitle" : "Result Date"
                },
                {
                    "mData" : "result_day",
                    "sTitle" : "Result Day"
                },
                {
                    "mData" : "draw_number",
                    "sTitle" : "Draw Number"
                },
                {
                    "mData" : "draw_time",
                    "sTitle" : "Draw Time"
                } ],
        "order" : [ [ 0, "desc" ] ]
        });
    };                  
    function make_NP() {
        $("#dataTables-res_item")
        .dataTable(
        {
            "bDestroy" : true,
            "bProcessing" : false,
            "bServerSide" : true,
            "sAjaxSource" : "/province_list_view?p_name=np",
            "aoColumns" : [
                    {
                        "mData" : "result_date",
                        "sTitle" : "Result Date"
                    },
                    {
                        "mData" : "result_day",
                        "sTitle" : "Result Day"
                    },
                    {
                        "mData" : "draw_number",
                        "sTitle" : "Draw Number"
                    },
                    {
                        "mData" : "draw_time",
                        "sTitle" : "Draw Time"
                    },
                    {
                        "mData" : "draw_place",
                        "sTitle" : "Draw Place"
                    },
                    {
                        "mData" : "draw_person",
                        "sTitle" : "Agent"
                    } ],
            "order" : [ [ 0, "desc" ] ]
        });
    };
});

Ответы на вопрос(3)

Ваш ответ на вопрос