TextBox上的AutoCompleteExtender返回页面HTML

时间:2016-02-15 21:30:30

标签: c# asp.net ajaxcontroltoolkit autocompleteextender

我正在尝试使用Ajax Control Toolkit AutoCompleteExtender实现搜索文本框。结果应该是与输入文本匹配的名称列表,但是显示的是页面源HTML,逐个字符,创建一个非常长的单个字母列表。

我找到并尝试了几个样品,但无法使其发挥作用。我确定数据库连接有效,并且在MSSMS中直接执行时查询SQL查询,返回预期的结果。 AjaxControlToolkit已安装并可在解决方案中的其他页面上运行。

之前曾问过这个问题(" Ajax Control Toolkit AutoCompleteExtender displays html source character by character of the current page as autocomplete suggestion list")。但是出于简单性和可维护性的原因,我不想像这张海报那样实现WebService。

acex.aspx

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>AutoCompleteExtender - Last Names</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <asp:TextBox ID="txbxLastName" runat="server"></asp:TextBox>
            <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
                TargetControlID="txbxLastName"
                MinimumPrefixLength="2" 
                EnableCaching="true" 
                CompletionSetCount="1" 
                CompletionInterval="1000" 
                ServiceMethod="GetLastNames">
            </asp:AutoCompleteExtender>
        </div>
    </form>
</body>
</html>

acex.aspx.cs

using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace MCA
{
    public partial class acex : System.Web.UI.Page
    {
        [System.Web.Script.Services.ScriptMethod()]
        [System.Web.Services.WebMethod]
        public static List<string> GetLastNames(string prefixText)
        {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString());
        SqlCommand cmd = new SqlCommand("SELECT [Last_Name] FROM [Entity_Person] WHERE [Last_Name] LIKE @Name+'%'", conn);
        cmd.Parameters.AddWithValue("@Name", prefixText);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        conn.Open();
        da.Fill(dt);
        List<string> LastNames = new List<string>();
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            LastNames.Add(dt.Rows[i][0].ToString());
        }
        return LastNames;
    }
}

}

0 个答案:

没有答案