Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Jquery AutoCompletar com banco de dados


não é assim que o jQuery Autocomplete funciona,

jQuery autocomplete envia automaticamente o texto digitado na caixa de texto para o local que você especifica em uma querystring "term" que você acessa no webmethod ou manipulador como este
         string input = HttpContext.Current.Request.QueryString["term"];

algo assim
              [WebMethod]
public static List<string> GetAutoCompleteData(string Car)
{
    string input = HttpContext.Current.Request.QueryString["term"];
    List<string> result = new List<string>();
    using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CarsConnectionString"].ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand("select DISTINCT Car from T_Car where Car like '%'+ @SearchText +'%", con))
        {
            con.Open();
            cmd.Parameters.AddWithValue("@SearchText", input);
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                result.Add(dr["Car"].ToString());
            }
            return result;
        }
    }
}

isso vai na sua página .aspx
    $(".ui-autocomplete").autocomplete({
        source: "Admin_home.aspx/GetAutoCompleteData",
        select: function (event, ui) { }
      });

EDITAR:

Na verdade, eu nunca fiz isso no método web , eu costumo usar um manipulador .ashx , mas isso deve funcionar tão bem.

quando você tiver tudo isso alterado, execute o site em modo de depuração, comece a digitar na caixa de texto e ajuste f12 e observe o tráfego que isso está causando - se você digitar "abc" deve ficar assim

Admin_home.aspx/GetAutoCompleteData?term=abc

então a resposta com a qual você pode ter que brincar um pouco , por padrão .net vai adicionar "d :...." à resposta do lado do cliente, mas você pode assistir e ajustar de acordo

Outra edição:
         <asp:Textbox ID="query" class="ui.autocomplete">

não é o que você coloca no jquery
          $(".ui-autocomplete").autocomplete({

deveria ser
         <asp:Textbox ID="query" class="ui-autocomplete">

No entanto, outra edição:

Isso está faltando uma única citação
        using (SqlCommand cmd = new SqlCommand("select DISTINCT Car from T_Car where Car like '%'+ @SearchText +'%", con))

substituir com
         using (SqlCommand cmd = new SqlCommand("select DISTINCT Car from T_Car where Car like '%'+ @SearchText +'%' ", con))