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();
}
其實我已經在這裏遵循此示例:HTTP://www.ajaxprojects。 com/ajax/tutorialdetails.php?itemid = 777在一個新的空白網站上,它確實有效!唯一不起作用的是當我點擊文本框並選擇Add AutoComplete頁面方法時,我得到「Can not create page method」GetCompletionList「,因爲找不到CodeBehind或CodeFile!」當然這不是真的。 –
你是對的,謝謝,這是由於UpdatePanel。現在效果很好。最後一個問題,如果沒有條目被發現我知道我可以返回一個字符串[]與「找不到條目」。但如何使它不能真正點擊「找不到條目」文本,以便它不會與文本框一起填充? –
另外,如果在腳本管理器中使用PageMethods設置EnablePageMethods =「true」。 –