Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Função autocompletar Asp .Net MVC

Bom dia a todos, estou com problemas para implementar uma função em minha aplicação. No caso, não estou conseguindo exibir o resultado da minha função autocomplete em uma das minhas paginas. O código que estou utilizando é este:

var url = "/Estoque/GetAutoComplete";

    $(document).ready(function () {
        $('#Cd_Cod_Produto').keypress(function () {
            $('#Cd_Cod_Produto').autocomplete({
                source: function () {
                    $.get(url, { term: $('#Cd_Cod_Produto').val() }, function (data) {
                        $.map(data, function (item) {
                            return {
                                label: item.Name,
                                val: item.Value
                               //console.log(item.Name);


                            }                              
                        });

                    });
                }
            });

        });
    });

O campo onde quero implementar a função:

<div class="input-group">
                    <input id="Cd_Cod_Produto" name="estoque.Cd_Cod_Produto" type="text" class="form-control" onblur="Funcao()" style=" padding-left:0px; padding-right:0px; padding-top:0px; text-transform:uppercase; " autocomplete="on">
                </div>

e o Controller:

 [HttpGet]
        public JsonResult GetAutoComplete(string term)
        {
            EstoqueDAO dao = new EstoqueDAO();

            List<Autocomplete> lista = dao.BuscaResultados(term);

            dao.Dispose();

            return Json(lista, JsonRequestBehavior.AllowGet);
        }

No caso eu já verifiquei que a chamada do controller acontece e ele retorna o resultado esperado, mas não aparece nada no meu input. Dentro do meu script existe uma parte comentada (//console.log(item.Name)) se eu retirar o comentário ele exibi os resultados no console do browser normalmente. Alguém sabe como posso resolver isso? Desde já agradeço a quem puder ajudar, dar uma dica.

3 respostas

O código estartem algum repositório para que eu possa dar uma olhada ?

Olá Wesley, tudo bom?

Você possui outras páginas rodando esse mesmo fonte?

Qual o resultado esperado? (Ex: "Era para aparecer uma lista com as opções de autocomplete.")

O que está acontecendo diferente do resultado esperado?

solução!

Olá pessoal, obrigado por responderem. Após alguma tentativas e debugando meu código eu acabei conseguindo fazer funcionar. No caso eu fiz o meu controller devolver apenas uma lista de Strings e modifiquei minha chamada na pagina desta forma:

   var url = "/Estoque/GetAutoComplete";

    $(document).ready(function () {
        $('#Cd_Cod_Produto').keypress(function () {

            var lista = ["000"];

            $.get(url, { term: $('#Cd_Cod_Produto').val() }, function (data) {

                var list = data;

                $.each(list, function (index, item) {
                    lista.push(item)
                });

            });

            $('#Cd_Cod_Produto').autocomplete({
                source: lista

            });

        });
    });

Desta forma, tratei o retorno da função ("data") e coloquei em uma lista, e a lista como fonte do autocomplete, desta forma obtive o resultado esperado da função autocomplete. Só não entendi muito bem o porque não consegui usar o retorno da função ("data") diretamente.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software