Почему этот код не работает? - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь добавить строку поиска с автозаполнением в 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 голосов
/ 08 ноября 2011

Две вещи для проверки:

1) проверить, поступают ли данные на сервер

2) поставить точку останова в операторе return, чтобы проверить, что возвращается из запроса

0 голосов
/ 08 ноября 2011

Установите точку останова в AutoComplete() и отладьте ее. Возможно, вы выдаваете ошибку на стороне сервера, которая не позволяет клиентской стороне AutoCompleteExtender увидеть возвращаемое значение веб-метода.

...