Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Completamento automatico Jquery con database

non è così che funziona jQuery Autocomplete,

jQuery autocomplete invia automaticamente il testo immesso nella casella di testo alla posizione specificata in una stringa di query "termine" a cui accedi in webmethod o in un gestore come questo

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

qualcosa del genere

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

questo va nella tua pagina .aspx

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

MODIFICA:

In realtà non l'ho mai fatto con il metodo web , di solito uso un gestore .ashx , ma dovrebbe funzionare altrettanto bene.

quando hai cambiato tutto, quindi esegui il sito in modalità debug, inizia a digitare nella casella di testo e adatta f12 e osserva il traffico che questo sta causando - se digiti "abc" dovrebbe apparire come

Admin_home.aspx/GetAutoCompleteData?term=abc

quindi la risposta con cui potresti dover giocare un po ', per impostazione predefinita .net aggiungerà "d:...." alla risposta lato client, ma puoi guardarla e adattarla di conseguenza

Un'altra modifica:

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

non è quello che metti in jquery

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

dovrebbe essere

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

Eppure, un'altra modifica:

Manca una sola citazione

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

sostituire con

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