Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Jquery AutoComplete avec base de données

ce n'est pas comme ça que jQuery Autocomplete fonctionne,

jQuery autocomplete envoie automatiquement le texte saisi dans la zone de texte à l'emplacement que vous spécifiez dans un "terme" de chaîne de requête auquel vous accédez dans webmethod ou un gestionnaire comme celui-ci

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

quelque chose comme ça

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

cela va dans votre page .aspx

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

MODIFIER :

Je n'ai jamais fait cela dans la méthode Web, j'utilise généralement un gestionnaire .ashx , mais cela devrait fonctionner tout aussi bien.

lorsque vous avez tout changé, lancez le site en mode débogage, commencez à taper dans la zone de texte et ajustez f12 et observez le trafic que cela provoque - si vous tapez "abc", cela devrait ressembler à

Admin_home.aspx/GetAutoCompleteData?term=abc

alors la réponse avec laquelle vous devrez peut-être jouer un peu, par défaut .net va ajouter "d :...." à la réponse côté client, mais vous pouvez la regarder et l'ajuster en conséquence

Autre modification :

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

n'est pas ce que vous mettez dans le jquery

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

ça devrait être

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

Pourtant, une autre modification :

Il manque un seul guillemet

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

remplacer par

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