Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Jquery AutoComplete mit Datenbank

so funktioniert jQuery Autocomplete nicht,

Die automatische Vervollständigung von jQuery sendet den in das Textfeld eingegebenen Text automatisch an die Stelle, die Sie in einem Abfragestring "Begriff" angeben, auf den Sie in einer Webmethode oder einem Handler wie diesem zugreifen

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

etwas in der Art

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

Dies kommt in Ihre .aspx-Seite

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

BEARBEITEN:

Ich habe das noch nie in der Webmethode gemacht, ich benutze normalerweise einen Handler .ashx , aber das sollte genauso gut funktionieren.

Wenn Sie all das geändert haben, führen Sie die Site im Debug-Modus aus, beginnen Sie mit der Eingabe in das Textfeld und passen Sie f12 an und beobachten Sie den Datenverkehr, den dies verursacht - wenn Sie "abc" eingeben, sollte es so aussehen

Admin_home.aspx/GetAutoCompleteData?term=abc

dann müssen Sie vielleicht ein wenig mit der Antwort spielen, standardmäßig fügt .net "d:...." zur Antwort auf der Client-Seite hinzu, aber Sie können es beobachten und entsprechend anpassen

Noch eine Bearbeitung:

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

ist nicht das, was Sie in die jquery eingeben

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

es sollte

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

Noch eine weitere Bearbeitung:

Hier fehlt ein einfaches Anführungszeichen

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

durch

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