18 Stimmen

Wie erstelle ich ein Autocomplete-TextBox in ASP.NET?

Wie erstelle ich ein Autocomplete TextBox in C#, das an eine Datenquelle gebunden ist?

17voto

veggerby Punkte 8810

Sie können entweder jQuery Autocomplete oder ASP.NET AJAX Toolkit Autocomplete verwenden

1 Stimmen

Ich werde mich hier melden, ich habe gute Erfahrungen mit jQuery Autocomplete gemacht. Eine Dokumentation finden Sie unter docs.jquery.com/Plugins/autocomplete.

4voto

ACP Punkte 33688

Ich benutze das AutoComplete-Feature des AjaxControl Toolkits.

5 Stimmen

Ich würde diese Lösung nicht empfehlen. Vielleicht noch im Jahr 2010, als dies beantwortet wurde. Jetzt sollte man davon Abstand nehmen. Es gibt bessere Möglichkeiten, dies mit JavaScript, jQuery usw. zu tun.

3voto

GauravSetia Punkte 169

Versuchen Sie das: .aspx Seite

Jetzt automatisch aus der Datenbank befüllen:

public static List GetCompletionList(string prefixText, int count)  
    {  
        return AutoFillProducts(prefixText);  

    }  

    private static List AutoFillProducts(string prefixText)  
    {  
        using (SqlConnection con = new SqlConnection())  
        {  
            con.ConnectionString = ConfigurationManager.ConnectionStrings["Conn"].ConnectionString;  
            using (SqlCommand com = new SqlCommand())  
            {  
                com.CommandText = "select ProductName from ProdcutMaster where " + "ProductName like @Search + '%'";  
                com.Parameters.AddWithValue("@Search", prefixText);  
                com.Connection = con;  
                con.Open();  
                List countryNames = new List();  
                using (SqlDataReader sdr = com.ExecuteReader())  
                {  
                    while (sdr.Read())  
                    {  
                        countryNames.Add(sdr["ProductName"].ToString());  
                    }  
                }  
                con.Close();  
                return countryNames;  
            }  
        }  
    }  

Jetzt erstellen Sie eine gespeicherte Prozedur, die die Produktdetails abhängig vom ausgewählten Produkt aus dem Auto-Complete-Textfeld abruft.

Create Procedure GetProductDet  
(  
@ProductName varchar(50)    
)  
as  
begin  
Select BrandName,warranty,Price from ProdcutMaster where ProductName=@ProductName  
End   

Erstellen Sie eine Funktion, um Produktdetails abzurufen:

private void GetProductMasterDet(string ProductName)  
    {  
        connection();  
        com = new SqlCommand("GetProductDet", con);  
        com.CommandType = CommandType.StoredProcedure;  
        com.Parameters.AddWithValue("@ProductName", ProductName);  
        SqlDataAdapter da = new SqlDataAdapter(com);  
        DataSet ds=new DataSet();  
        da.Fill(ds);  
        DataTable dt = ds.Tables[0];  
        con.Close();  
        //TextBox aus DataTable binden  
        txtbrandName.Text =dt.Rows[0]["BrandName"].ToString();  
        txtwarranty.Text = dt.Rows[0]["warranty"].ToString();  
        txtPrice.Text = dt.Rows[0]["Price"].ToString();   
    }

Auto-PostBack sollte true sein

Jetzt rufen Sie einfach diese Funktion auf

protected void TextBox1_TextChanged(object sender, EventArgs e)  
  {  
      //Methode aufrufen und Werte übergeben  
      GetProductMasterDet(TextBox1.Text);  
  }

0 Stimmen

Was passiert, wenn ich "AutoCompleteExtender ist kein bekanntes Element" erhalte?

0 Stimmen

Wird die TextChanged-Funktion bei jeder Texteingabe aufgerufen?

1voto

Iman Punkte 16668

1-Installieren Sie das AjaxControl Toolkit einfach über Nugget

PM> Install-Package AjaxControlToolkit

2-dann im Markup

3- im Code-Behind : um die Vorschläge zu erhalten

[System.Web.Services.WebMethodAttribute(),System.Web.Script.Services.ScriptMethodAttribute()]  
    public static string[] GetCompletionList(string prefixText, int count, string contextKey) {  
        // Array von Filmen erstellen  
        string[] movies = {"Star Wars", "Star Trek", "Superman", "Memento", "Shrek", "Shrek II"};  

        // Übereinstimmende Filme zurückgeben  
        return (from m in movies where m.StartsWith(prefixText,StringComparison.CurrentCultureIgnoreCase) select m).Take(count).ToArray();  
    }

Quelle: http://www.asp.net/ajaxlibrary/act_autocomplete_simple.ashx

-2voto

Aspx Seitenprogrammierung

.cs Seitenprogrammierung

protected void Page_Load(object sender, EventArgs e)
{
     autocomplete();
}
protected void autocomplete()
{
    Database p = new Database();
    DataSet ds = new DataSet();
    ds = p.sqlcall("select [name] from [stu_reg]");
    int row = ds.Tables[0].Rows.Count;
    string abc="";
    for (int i = 0; i < row;i++ )
        abc = abc + ""+ds.Tables[0].Rows[i][0].ToString()+"";
    datalist1.InnerHtml = abc;
}

Hier ist Database eine Datei (Database.cs), in der ich eine Methode namens sqlcall erstellt habe, um Daten aus der Datenbank abzurufen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X