none
Como implementar o auto-complete no textbox? RRS feed

  • Pergunta

  • Olá,

    Andei pesquisando o assunto na internet e só acho dicas de 2009, 2011... nada atual, mais moderno, usando .NET 4.0. Alguém sabe como eu faço isso em C# 4.0?

    Desde já, obrigado!

    segunda-feira, 22 de fevereiro de 2016 23:29

Respostas

  • Consegui resolver assim:

    Na página:

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
    
    ...
    
    <asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" EnableScriptGlobalization="true" runat="server"></asp:ScriptManager>
    
    ...
    <asp:TextBox ID="txtFavorecido" class="form-control" runat="server"></asp:TextBox>
    <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" ServicePath="BuscaFavorecido.asmx" ServiceMethod="FindName" MinimumPrefixLength="1" TargetControlID="txtFavorecido" CompletionInterval="10" EnableCaching="true" CompletionSetCount="15" CompletionListCssClass="completionList" CompletionListItemCssClass="listItem" CompletionListHighlightedItemCssClass="itemHighlighted" runat="server"></ajaxToolkit:AutoCompleteExtender>


    O webservice BuscaFavorecido.asmx:

    using BusinessObjects;
    using DataObjects;
    using System;
    using System.Collections.Generic;
    using System.Web.Services;
    
    namespace WebApplication.admin
    {
        /// <summary>
        /// Summary description for BuscaFavorecido
        /// </summary>
        [WebService(Namespace = "http:/localhost/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
        [System.Web.Script.Services.ScriptService]
        public class BuscaFavorecido : System.Web.Services.WebService
        {
            [WebMethod]
            public string[] FindName(string prefixText, int count)
          {
                CadastroDAO oCadastroDAO = new CadastroDAO();
                List<CadastroBO> oListaCadastro = new List<CadastroBO>();
    
                //return all records whose Title starts with the prefix input string         
                List<string> titleArList = new List<string>();
                oListaCadastro = oCadastroDAO.buscarNomeCadastro(prefixText);
                for (int i = 0; i < oListaCadastro.Count; i++)
                {
                    string strTemp = Convert.ToString(oListaCadastro[i].Nome);
                    titleArList.Add(strTemp);
                }
                return titleArList.ToArray();
            }
        }
    }

    Fica a dica!

    PS: Não funcionou no firefox! Funcionou no Chrome, IE e Opera.

    • Marcado como Resposta wcsantos quarta-feira, 24 de fevereiro de 2016 15:27
    quarta-feira, 24 de fevereiro de 2016 15:26

Todas as Respostas

  • Boa noite,

    Verifique o link abaixo, no qual eu explico como utilizar a funcionalidade de AutoComplete em TextBox.

    http://smcode.com.br/autoComplete.aspx

    Abs.

    Bruno Destro


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/

    segunda-feira, 22 de fevereiro de 2016 23:56
  • private void Form1_Load(object sender, EventArgs e)
    {
        // Create the list to use as the custom source. 
        var source = new AutoCompleteStringCollection();
        source.AddRange(new string[]
                        {
                            "January",
                            "February",
                            "March",
                            "April",
                            "May",
                            "June",
                            "July",
                            "August",
                            "September",
                            "October",
                            "November",
                            "December"
                        });
    
        // Create and initialize the text box.
        var textBox = new TextBox
                      {
                          AutoCompleteCustomSource = source,
                          AutoCompleteMode = 
                              AutoCompleteMode.SuggestAppend,
                          AutoCompleteSource =
                              AutoCompleteSource.CustomSource,
                          Location = new Point(20, 20),
                          Width = ClientRectangle.Width - 40,
                          Visible = true
                      };
    
        // Add the text box to the form.
        Controls.Add(textBox);
    }

    Fonte:

    TextBox.AutoCompleteCustomSource Propriedade

    Att,


    Antero Marques

    segunda-feira, 22 de fevereiro de 2016 23:59
  • No meu textebox não aparece a opção AutoCompleteMode.
    terça-feira, 23 de fevereiro de 2016 00:03
  • Boa noite,

    Verifique o link abaixo, no qual eu explico como utilizar a funcionalidade de AutoComplete em TextBox.

    http://smcode.com.br/autoComplete.aspx

    Abs.

    Bruno Destro


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/

    Desculpe, mas não está legal e nem funcional... no seu exemplo tem a palavra "Ajax" e digitando "Aj" seu código não acha.

    Mas obrigado!

    terça-feira, 23 de fevereiro de 2016 00:18
  • 4.0

    terça-feira, 23 de fevereiro de 2016 00:21
  • Já que é Asp.Net, consulte este link:

    O bom e velho Macoratti.

    ASP .NET - Recurso auto-completar com jQuery

    Att,


    Antero Marques

    terça-feira, 23 de fevereiro de 2016 00:37
  • Não está funcional ou você não entendeu como faz a implementação do código? Poste a forma que você está tentando fazer que podemos ajudar.

    Você chegou a testar a funcionalidade no TextBox da página? Pelo o que eu entendi é isso que você quer. É isso mesmo?

    Bruno Destro


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/

    terça-feira, 23 de fevereiro de 2016 11:07
  • Consegui resolver assim:

    Na página:

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
    
    ...
    
    <asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" EnableScriptGlobalization="true" runat="server"></asp:ScriptManager>
    
    ...
    <asp:TextBox ID="txtFavorecido" class="form-control" runat="server"></asp:TextBox>
    <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" ServicePath="BuscaFavorecido.asmx" ServiceMethod="FindName" MinimumPrefixLength="1" TargetControlID="txtFavorecido" CompletionInterval="10" EnableCaching="true" CompletionSetCount="15" CompletionListCssClass="completionList" CompletionListItemCssClass="listItem" CompletionListHighlightedItemCssClass="itemHighlighted" runat="server"></ajaxToolkit:AutoCompleteExtender>


    O webservice BuscaFavorecido.asmx:

    using BusinessObjects;
    using DataObjects;
    using System;
    using System.Collections.Generic;
    using System.Web.Services;
    
    namespace WebApplication.admin
    {
        /// <summary>
        /// Summary description for BuscaFavorecido
        /// </summary>
        [WebService(Namespace = "http:/localhost/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
        [System.Web.Script.Services.ScriptService]
        public class BuscaFavorecido : System.Web.Services.WebService
        {
            [WebMethod]
            public string[] FindName(string prefixText, int count)
          {
                CadastroDAO oCadastroDAO = new CadastroDAO();
                List<CadastroBO> oListaCadastro = new List<CadastroBO>();
    
                //return all records whose Title starts with the prefix input string         
                List<string> titleArList = new List<string>();
                oListaCadastro = oCadastroDAO.buscarNomeCadastro(prefixText);
                for (int i = 0; i < oListaCadastro.Count; i++)
                {
                    string strTemp = Convert.ToString(oListaCadastro[i].Nome);
                    titleArList.Add(strTemp);
                }
                return titleArList.ToArray();
            }
        }
    }

    Fica a dica!

    PS: Não funcionou no firefox! Funcionou no Chrome, IE e Opera.

    • Marcado como Resposta wcsantos quarta-feira, 24 de fevereiro de 2016 15:27
    quarta-feira, 24 de fevereiro de 2016 15:26
  • Você disse que queria algo mais atual.

    Acho que são poucos os que ainda querem usar AjaxControlToolKit.

    De qualquer forma, o importante é que deu certo pra você.

    Att,


    Antero Marques

    quinta-feira, 25 de fevereiro de 2016 17:52