我正在尝试使用网络方法在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
答案 0 :(得分:0)
在AutoComplete()
中设置断点并进行调试。您可能会抛出一个错误服务器端,阻止客户端AutoCompleteExtender看到Web方法返回值。
答案 1 :(得分:0)
要检查两件事:
1)检查是否有数据进入服务器
2)在“return”语句上放置一个断点,以检查从查询中返回的内容