0
I have a search page made in ASP.NET MVC that has the data loaded in a table using AJAX and jQuery Template, to not need to reload the page after the search. Follow the example below:
function CarregaTabela() {
idFiltro = $("#idFiltro").val();
pesquisa = $("#campoPesquisa").val();
var url = "http://servidorTeste/api/precos/";
$.ajax({
url: url,
type: "POST",
data: {
"idLoja": $("#idLoja").val(),
"idFiltro": idFiltro,
"Pesquisa": pesquisa,
"TotalProdutos": $("#TotalProdutos").val()
},
success: function (retorno) {
if (retorno.mensagemErro == null) {
//Aqui vai pra tabela de genéricos
if (retorno.listaPrecos.length > 0) {
$.notify(retorno.listaPrecos.length + " Produtos encontrados.");
//Oculto a tabela de genéricos.
$("#tabelaProdutos").hide();
//Removo todos os tr filhos do tbody
$("#corpoProdutos tr").remove();
//Oculto a tabela de genéricos.
$("#tabelaEquivalentes").hide();
//Removo todos os tr filhos do tbody
$("#corpoEquivalentes tr").remove();
//Foreach
$.each(retorno.listaPrecos, function (i, item) {
//Formando o preço no formato 00.00
item.descontoPercentagemStandard = CalcularPercentagem(item.Referencia, item.Standard).toFixed(2);
item.descontoPercentagemPreferencial = CalcularPercentagem(item.Referencia, item.Preferencial).toFixed(2);
item.descontoPercentagemAposentado = CalcularPercentagem(item.Referencia, item.Aposentado).toFixed(2);
item.descontoPercentagemMedico = CalcularPercentagem(item.Referencia, item.Medico).toFixed(2);
item.PercentagemPMC *= 100;
item.PercentagemPMC = item.PercentagemPMC.toFixed(2);
item.Referencia = item.Referencia.toFixed(2);
item.Standard = item.Standard.toFixed(2);
item.Preferencial = item.Preferencial.toFixed(2);
item.Aposentado = item.Aposentado.toFixed(2);
item.Medico = item.Medico.toFixed(2);
if (item.Condicao == "VENDA") {
item.Valor = item.Standard - item.VmsPDV;
item.Valor = item.Valor.toFixed(2);
}
});
//Adiciono todos os items a tabela de produtos.
$("#tmplProdutos").tmpl(retorno.listaPrecos).appendTo("#corpoProdutos");
$("#tabelaProdutos").show();
else {
$.notify(retorno.listaPrecos.length + " Produtos encontrados.");
//Oculto a tabela de genéricos.
$("#tabelaProdutos").hide();
//Removo todos os tr filhos do tbody
$("#corpoProdutos tr").remove();
}
}
}
else {
$("#tabelaProdutos").hide();
$.notify(retorno.mensagemErro, { status: "danger" });
}
},
error: function () {
bootbox.alert("Falha ao pesquisar produtos.");
},
complete: function () {
loading.stop();
}
});
};
I recently implemented jQuery Datatable on this search page. The first search works well, but from the second on, in addition to displaying all the search (which should only appear 10 items at a time), when I will filter in the search bar in all columns it shows the data from the previous search.
Remembering that the Datatable is initialized along with the page, but the data is reloaded to each search by searching.
Could someone help me?
Could you put your Ajax code in your question?
– Leonel Sanches da Silva
I just put, as I said before, I use the jquery template
– Gustavo Correia
Hello, have you made a console.log to the return variable, to see if the information coming from ajax is correct? I’m not quite inside the Datatables library but try the clear() method from the library at first.
– Tiago Gomes
Man, that was it, the clear
– Gustavo Correia
Hello, post please the solution and mark as right. So it gets answered and can help others who have the same question.
– Tiago Gomes
Write in the reply, so I can mark as sure
– Gustavo Correia