TransWikia.com

Autocomplete não mostra resultados no input na View

Stack Overflow em Português Asked by Raffa Ferreira on October 25, 2020

Eu já vi outros casos em algumas respostas aqui, tentei seguir os passos de outras respostas e não adiantou em nada! Estou com uma dúvida, esta é minha primeira vez que utilizo autocomplete do jquery, sou novo em asp.net mvc!

Eu queria que ao usuário digitar no textbox ou input, de acordando com ele digitando já aparecesse o resultado daquilo que ele está procurando no campo, o que me levou ao autocomplete, segui alguns passos na internet, mas como é minha primeira vez usando ele, estou com dúvida, ele não retorna os dados do banco, porque o que eu quero retornar do banco é o CLIENTE pelo IDCLIENTE, a instrução SQL eu já tenho!
Meu problema e que ele não está trazendo ao digitar não aparece nada!

Está é a minha Viewcom a função Jquery no íncio da página:

<script>    
    $(function () {
        $("#cliente").autocomplete({
            source: '@Url.Action("GetClientesJson",)',
            minLength: 1
        });
    });
</script>

<div class="row">
    <div class="span12">
        <div class="widget widget-table action-table">
            <div class="widget-header">
                <i class="icon-th-list"></i>
                <h3>Vendas Por Produtos</h3>
            </div>
            <!-- /widget-header -->
            <div class="widget-content">
                @if (ViewData["reportvendas"] == null)
                {
                    <form action="#" id="myform" method="post">
                        <div class="login-fields">
                            <div class="field">
                                <table style="margin:10px">
                                    <tr>
                                        <td>Data Venda:</td>
                                        <td><input type="text" id="inicio" name="inicio" class="login requerido birth" style="width:90px" /></td>
                                        <td>Ate</td>
                                        <td><input type="text" id="fim" name="fim" class="login requerido birth" style="width:90px" /></td>
                                        <td>Agrupado</td>
                                        <td>
                                            <select id="agrupamento" name="agrupamento" class="login" style="width:200px">
                                                <option value="grupo">Grupo</option>
                                                <option value="vendedor">Vendedor</option>
                                                <option value="cliente">Cliente</option>
                                            </select>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Grupo:</td>
                                        <td>
                                            <select id="grupo" name="grupo" class="login" style="width:200px">
                                                <option value="">Selecione</option>
                                                @foreach (var item in combo.Grupo().OrderBy(ordem => ordem.DESCRICAO))
                                                {
                                                    <option value="@item.IDPRODGRUPO">@item.DESCRICAO</option>
                                                }
                                            </select>
                                        </td>
                                        <td>Sub Grupo:</td>
                                        <td>
                                            <select id="subgrupo" name="subgrupo" class="login" style="width:200px">
                                                <option value="">Selecione</option>
                                                @foreach (var item in combo.SubGrupo().OrderBy(ordem2 => ordem2.DESCRICAO))
                                                {
                                                    <option value="@item.IDSUBGRUPO">@item.DESCRICAO</option>
                                                }
                                            </select>
                                        </td>
                                        <td>Fabricante:</td>
                                        <td>
                                            <select id="fabricante" name="fabricante" class="login" style="width:200px">
                                                <option value="">Selecione</option>
                                                @foreach (var item in combo.Fabricante().OrderBy(m => m.NOMERAZAO))
                                                {
                                                    <option value="@item.IDFABRICANTE">@item.NOMERAZAO</option>
                                                }
                                            </select>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Codigo de Barras</td>
                                        <td><input type="text" id="codigoinicio" name="codigoinicio" class="login" style="width:90px" /></td>
                                        <td>a</td>
                                        <td><input type="text" id="codigofim" name="codigofim" class="login" style="width:90px" /></td>
                                    </tr>
                                    <tr>


                            <td>Cliente:</td>
                            <td>
                               @using (Html.BeginForm())
                               {
                                @Html.TextBox("dados", null, new { id = "cliente" });
                                <input type="submit" value="Procurar" />
                                }                            
                            </td>

Aonde eu estou tentando usar este autocomplete é na ultima linha do código com id Cliente e o elemento html td Cliente

A minha função Jquery está na primeira linha, ali no começo ! Com GetClientesJson

A minha ControllerVendasPorProduto e a Action desta View e o JsonResultque retorna os dados para está View está assim:

        [HttpPost]
        public ActionResult Movimentacao_Total_Vendas(ReportsMovimentacaoTotalVendas dados)
        {
            ReportsData report = new ReportsData();
            report.MovimentacaoTotalVendas(dados);
            return View();
        }


        [HttpPost]
        public JsonResult GetClientesJson(string term)
        {
            ComboData BDGetClientesJson = new ComboData();
            List<string> nomes;

            nomes = BDGetClientesJson.Cliente().Where(x => x.CLIENTE.StartsWith(term)).Select(c => c.CLIENTE).ToList();

            return Json(nomes,JsonRequestBehavior.AllowGet);
        }

Bem, com tudo isso seguindo alguns passos por aí não está me retornando os dados no campo, nem mostrando os nomes dos Clientes enquanto usuário digita! Não me retorna nada, como disse primeira vez que utilizo esse autocomplete. Poderiam me dizer o que está errado e gostaria de uma solução por código com base no que mostrei !

One Answer

Parece pouco, mas tente remover a "," apos a action

$("#cliente").autocomplete({
    source: '@Url.Action("GetClientesJson",)',
    minLength: 1
});

E você tem certeza que adicionou o jquery-ui com a biblioteca para autocomplete ? E sim, o [HttpPost] não deve ser adicionado ao método, já que você não está especificando para ser via Post, pois o deafult é Get.

Se ainda não funcionar, monte um JSON na mão e adicione este ao Source. Pois assim você tem um ponto de partida para perceber onde está o erro, no server ou no cliente.

Answered by Lucas Roselli on October 25, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP