2012-06-08 74 views
0

試圖讓一個自動完成工作的文本框,但它似乎代碼背後的方法永遠不會發射。任何人都可以從下面看到這個問題?我已經嘗試過各種樣本/教程無效。ajaxtoolkit AutoCompleteExtender不工作

<asp:ScriptManager ID="SM1" runat="server"></asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanel" runat="server"> 
     <ContentTemplate> 
      <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
      <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtUserName" ServiceMethod="GetCompletionList" 
      MinimumPrefixLength="2" CompletionInterval="10" EnableCaching="true" CompletionSetCount="3" UseContextKey="True"> 
      </ajaxToolkit:AutoCompleteExtender> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

後面的代碼:

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethod()] 
public static string[] GetCompletionList(string prefixText, int count, string contextKey) 
{ 
    string connectionString = ConfigurationManager.ConnectionStrings["WMSDatabase"].ConnectionString; 
    SqlConnection conn = new SqlConnection(connectionString); 
    // Try to use parameterized inline query/sp to protect sql injection 
    SqlCommand cmd = new SqlCommand("SELECT TOP " + count + " Alias FROM dbo.Users WHERE Alias LIKE '" + prefixText + "%'", conn); 
    SqlDataReader oReader; 
    conn.Open(); 
    List<string> CompletionSet = new List<string>(); 
    oReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
    while (oReader.Read()) 
    CompletionSet.Add(oReader["Alias"].ToString()); 
    return CompletionSet.ToArray(); 
} 

回答

2

嘗試從您的代碼刪除更新面板:

<asp:ScriptManager ID="SM1" EnablePageMethods="true" runat="server"></asp:ScriptManager> 
      <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
      <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtUserName" ServiceMethod="GetCompletionList" 
      MinimumPrefixLength="2" CompletionInterval="10" EnableCaching="true" CompletionSetCount="3" UseContextKey="True"> 
      </ajaxToolkit:AutoCompleteExtender> 
+0

其實我已經在這裏遵循此示例:HTTP://www.ajaxprojects。 com/ajax/tutorialdetails.php?itemid = 777在一個新的空白網站上,它確實有效!唯一不起作用的是當我點擊文本框並選擇Add AutoComplete頁面方法時,我得到「Can not create page method」GetCompletionList「,因爲找不到CodeBehind或CodeFile!」當然這不是真的。 –

+0

你是對的,謝謝,這是由於UpdatePanel。現在效果很好。最後一個問題,如果沒有條目被發現我知道我可以返回一個字符串[]與「找不到條目」。但如何使它不能真正點擊「找不到條目」文本,以便它不會與文本框一起填充? –

+0

另外,如果在腳本管理器中使用PageMethods設置EnablePageMethods =「true」。 –

相關問題