【问题标题】:ajaxtoolkit AutoCompleteExtender not workingajaxtoolkit AutoCompleteExtender 不工作
【发布时间】:2012-06-12 11:16:34
【问题描述】:

试图让自动完成功能在文本框中工作,但方法背后的代码似乎永远不会触发。任何人都可以从下面看到问题吗?我尝试了各种示例/教程都没有效果。

<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();
}

【问题讨论】:

    标签: c# asp.net autocomplete textbox


    【解决方案1】:

    尝试从您的代码中删除更新面板:

    <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>
    

    【讨论】:

    • 我实际上已经在这里遵循了这个示例:ajaxprojects.com/ajax/tutorialdetails.php?itemid=777 在一个新的空白网站上,它确实有效!唯一对我当前项目不起作用的是,当我单击文本框并选择添加自动完成页面方法时,我得到“无法创建页面方法“GetCompletionList”,因为没有找到 CodeBehind 或 CodeFile!”这当然不是真的。
    • 你是对的,谢谢,这是由于 UpdatePanel。现在效果很好。最后一个问题,如果没有找到条目,我知道我可以返回一个带有“未找到条目”的字符串 []。但是如何做到这一点,以便您实际上无法单击“未找到条目”文本,以便它不会填充文本框?
    • 另外,如果您使用 PageMethods,请在脚本管理器中设置 EnablePageMethods="true"。
    猜你喜欢
    • 2012-08-04
    • 2018-04-23
    • 1970-01-01
    • 2010-10-18
    • 2013-12-11
    • 2017-01-22
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多