2017-01-04 2 views
1

Je veux faire une saisie semi-automatique avec la base de données. J'ai utilisé le code suivant mais dans l'extension de sortie montre les codes html. Il n'exécute même pas de code derrière les fonctions. Le code suivant que j'ai utilisé qui ne fonctionne pas correctement.Asp.net autocomplete Extender ne fonctionne pas

enter image description here

page ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CS.aspx.cs" Inherits="_Default" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
<asp:ScriptManager ID="ScriptManager1" runat="server" 
EnablePageMethods = "true"> 
</asp:ScriptManager> 

<asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox> 
<cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" 
    MinimumPrefixLength="2" 
    CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" 
    TargetControlID="txtContactsSearch" 
    ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false"> 
</cc1:AutoCompleteExtender> 
    </div> 
    </form> 
</body> 
</html> 

code C#

[System.Web.Script.Services.ScriptMethod()] 
[System.Web.Services.WebMethod] 
public static List<string> SearchCustomers(string prefixText, int count) 
{ 
    using (MySqlConnection conn = new MySqlConnection()) 
    { 
     conn.ConnectionString = ConfigurationManager 
       .ConnectionStrings["conio"].ConnectionString; 
     using (MySqlCommand cmd = new MySqlCommand()) 
     { 
      cmd.CommandText = "select clientID from clientsDetails where " + 
      "clientID like @SearchText + '%'"; 
      cmd.Parameters.AddWithValue("@SearchText", prefixText); 
      cmd.Connection = conn; 
      conn.Open(); 
      List<string> customers = new List<string>(); 
      using (MySqlDataReader sdr = cmd.ExecuteReader()) 
      { 
       while (sdr.Read()) 
       { 
        customers.Add(sdr["clientID"].ToString()); 
       } 
      } 
      conn.Close(); 
      return customers; 
     } 
    } 
} 
+0

Assurez-vous que vous avez enregistré 'AjaxControlToolkit' et ajoutez' 'ScriptManager –

+0

@Div Oui qui est déjà ajouté. – SUN

+0

S'il vous plaît ajouter à la question! –

Répondre

0

Vous visualisez la page qui contient le TextBox sur l'URL:

http://localhost:64890/CS

Cela semble être cartographiée par un route à la page

CS.aspx

Lorsque le AutoCompleteExtender envoie son AJAX demande, il enverra à cette adresse:

http://localhost:64890/CS/SearchCustomers

Cela est probablement ramassé par certains route que vous avez mis en place, et le résultat est qu'il ne va pas à l'PageMethod dans CS.aspx.cs mais est plutôt traitée d'une autre manière.

En supposant que votre page CS.aspx dans l'application Web dossier racine, vous pourrez peut-être de le corriger en ajoutant ceci:

ServicePath="~/CS.aspx" 

vous AutoCompleteExtender. Comme si:

<cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" 
    MinimumPrefixLength="2" 
    ServicePath="~/CS.aspx" 
    CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" 
    TargetControlID="txtContactsSearch" 
    ID="AutoCompleteExtender1" runat="server" FirstRowSelected="false"> 
</cc1:AutoCompleteExtender> 
+0

Aucun homme. J'ai mis les propriétés dans l'extension comme vous l'avez montré mais maintenant aucune sortie ne montre .. J'ai également essayé les mêmes codes sous forme web simple en créant un nouveau projet et cela a bien fonctionné. Dans mon projet actuel, je parcours. – SUN

+0

@SUN Quel est le chemin de 'CS.aspx' dans votre solution/application web. Et aussi, pouvez-vous ajouter vos itinéraires à la question? – user1429080

+0

Mon nom de page est auto.aspx, donc mon chemin de service est ~/auto.apsx – SUN

0
add <cc1:ToolkitScriptManager></cc1:ToolkitScriptManager> instead of <asp:ScriptManager></asp:ScriptManager> 

your aspx page ---- 

    <cc1:ToolkitScriptManager ID="ScriptManager1" runat="server" 
    EnablePageMethods = "true"> 
    </cc1:ToolkitScriptManager> 

    <asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox> 
       <cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" MinimumPrefixLength="1" CompletionInterval="10" 
       EnableCaching="false" CompletionSetCount="10" TargetControlID="txtContactsSearch" ID="AutoCompleteExtender2" 
       runat="server" FirstRowSelected="false"></cc1:AutoCompleteExtender> 


    your cs page---- 

    [System.Web.Script.Services.ScriptMethod()] 
      [System.Web.Services.WebMethod] 
      public static List<string> SearchCustomers(string prefixText, int count) 
      { 

       using (SqlConnection conn = new SqlConnection()) 
       { 
        conn.ConnectionString = ConfigurationManager 
          .ConnectionStrings["conio"].ConnectionString; 
        using (SqlCommand cmd = new SqlCommand()) 
        { 
         cmd.CommandText = "select clientID from clientsDetails where "+"clientID like @SearchText + '%'"; 
         cmd.Parameters.AddWithValue("@SearchText", prefixText); 
         cmd.Connection = conn; 
         conn.Open(); 
         List<string> customers = new List<string>(); 
         using (SqlDataReader sdr = cmd.ExecuteReader()) 
         { 
          while (sdr.Read()) 
          { 
           customers.Add(sdr["name"].ToString()); 
          } 
         } 
         conn.Close(); 
         return customers; 
        } 
       } 
      }