Quero alterar a quantidade de colunas em dataTable usando um parâmetro JSON recebido pelo Ajax quando a dataTable fez a chamada.
Então eu tentei isso:
var columns = [
{data: "data1"},
{data: "data2"},
{data: "data3"}
];
$("#table").dataTable({
ajax: {
url: "controller/get_table",
dataSrc: function (json) {
if (json.param) {
columns.push({data: "data4"});
columns.push({data: "data5"});
}
return json.data;
}
},
columns: columns,
...
Mas eu descobri que o array de colunas é usado pelo dataTable ANTES do dataSrc, então quando a função muda o array de colunas, é tarde demais.
Como posso fazer isso sem uma segunda chamada do Ajax para o param? Apenas usando a chamada de dataTable.
Respostas:
1 para resposta № 1Inicie sua dataTable no retorno de chamada do ajax.
$.ajax({
//get your json params
}).done(function(response){
$("#table").dataTable({response});
});
Datável como um método draw () que força a desenhar a tabela na página web.
Você também pode fazer isso com promessas.