为什么这段代码不起作用?

时间:2011-11-07 22:12:41

标签: asp.net webmethod

我正在尝试使用网络方法在asp.net中添加带有自动完成的搜索栏,这是我尝试过的:

 <asp:TextBox runat="server" ID="sBox"></asp:TextBox>

        <asp:AutoCompleteExtender runat="server" ID="aC" TargetControlID="sBox"
            MinimumPrefixLength="2" Enabled="true" EnableCaching="true"
                CompletionInterval="0000" CompletionSetCount="20"
                    ServiceMethod="AutoComplete" ServicePath="~/Controls/SearchComplete.asmx"
                ></asp:AutoCompleteExtender>

和网络方法:

    [WebMethod]
public string[] AutoComplete(string prefixText) //auto completing the searchbar
{
    List<string> listString = new List<string>();

    using (SqlConnection conn = new SqlConnection(@"ConnectionString"))
    {
        SqlCommand cmd = new SqlCommand("SELECT id,name FROM search WHERE name LIKE @name", conn);
        cmd.Parameters.AddWithValue("@name", "%" + prefixText + "%");

        conn.Open();

        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.HasRows) 
        {
            while (dr.Read()) 
            {
                listString.Add(AutoCompleteExtender.CreateAutoCompleteItem(dr["name"].ToString(), dr["id"].ToString()));
            }
        }
    }

    string[] str = listString.ToArray();
    return str;
}

它没有给出错误它只是没有自动完成,谢谢

使用asp.net 4.0

2 个答案:

答案 0 :(得分:0)

AutoComplete()中设置断点并进行调试。您可能会抛出一个错误服务器端,阻止客户端AutoCompleteExtender看到Web方法返回值。

答案 1 :(得分:0)

要检查两件事:

1)检查是否有数据进入服务器

2)在“return”语句上放置一个断点,以检查从查询中返回的内容