Jquery datatable appears with the result of previous searches when filtering

Asked

Viewed 223 times

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?

  • I just put, as I said before, I use the jquery template

  • 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.

  • Man, that was it, the clear

  • Hello, post please the solution and mark as right. So it gets answered and can help others who have the same question.

  • Write in the reply, so I can mark as sure

Show 1 more comment

1 answer

0


Solved, the problem is that the function "Datatable" should be initialized with uppercase letter, instead of minuscule, as the example below:

 tabela = $('#tabelaProdutos').DataTable({
                    "bBootstrap": true,
                    "bLengthChange": true,
                    "bFilter": true,
                    "sPaginationType": "full_numbers",
                    "bDestroy": true,
                    "oLanguage": {
                        "sProcessing": "Processando...",
                        "sLengthMenu": "Mostrar _MENU_ registros",
                        "sZeroRecords": "Não foram encontrados resultados",
                        "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registros",
                        "sInfoEmpty": "Mostrando de 0 até 0 de 0 registros",
                        "sInfoFiltered": "(filtrado de _MAX_ registros no total)",
                        "sInfoPostFix": "",
                        "sSearch": "Pesquisar em todas as colunas:",
                        "sUrl": "",
                        "oPaginate": {
                            "sFirst": "Primeiro",
                            "sPrevious": "Anterior",
                            "sNext": "Seguinte",
                            "sLast": "Último"
                        }
                    },
                    "sDom": '<"H"lf>t<"F"iTp>',
                    "oTableTools": {
                        "aButtons": [],
                        "sRowSelect": "single"
                    }
                });

Browser other questions tagged

You are not signed in. Login or sign up in order to post.