sql >> Base de Datos >  >> RDS >> Sqlserver

Jquery Autocompletar con base de datos

así no es como funciona jQuery Autocompletar,

jQuery autocompletar envía automáticamente el texto ingresado en el cuadro de texto a la ubicación que especifique en un "término" de cadena de consulta al que accede en el método web o controlador como este

         string input = HttpContext.Current.Request.QueryString["term"];

algo como esto

              [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;
        }
    }
}

esto va en su página .aspx

    $(".ui-autocomplete").autocomplete({
        source: "Admin_home.aspx/GetAutoCompleteData",
        select: function (event, ui) { }
      });

EDITAR:

En realidad, nunca he hecho esto en el método web, generalmente uso un controlador .ashx, pero esto debería funcionar igual de bien.

cuando haya cambiado todo, ejecute el sitio en modo de depuración, comience a escribir en el cuadro de texto y ajuste f12 y observe el tráfico que esto está causando; si escribe "abc", debería verse como

Admin_home.aspx/GetAutoCompleteData?term=abc

entonces la respuesta con la que podrías tener que jugar un poco, de forma predeterminada, .net agregará "d:...." a la respuesta del lado del cliente, pero puedes verla y ajustarla en consecuencia

Otra edición:

         <asp:Textbox ID="query" class="ui.autocomplete">

no es lo que pones en el jquery

          $(".ui-autocomplete").autocomplete({

debería ser

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

Sin embargo, otra edición:

A esto le falta una comilla simple

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

reemplazar con

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