2013-10-28 7 views
6

У меня есть автозаполняющий расширитель в текстовом поле, который показывает записи как список из базы данных, но whern Я нажимаю на texbox и начинаю печатать ничего невнятное. мой HTML кодajax autocomplete extender не работает

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <asp:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" 
     Enabled="True" TargetControlID="TextBox1" ServicePath="~/WebService.asmx" 
       ServiceMethod="GetCompletionList" 
       MinimumPrefixLength="2" 
       CompletionInterval="1000" 
       EnableCaching="true" 
       CompletionSetCount="20" 
       DelimiterCharacters=";, :" 
       ShowOnlyCurrentWordInCompletionListItem="true" > 
    </asp:AutoCompleteExtender> 

И мой веб-сервис

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using System.Web.Services; 
    using System.Data; 
    using MySql.Data.MySqlClient; 
    using System.Configuration; 

    /// <summary> 
    /// Summary description for WebService 
    /// </summary> 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService] 
    public class WebService : System.Web.Services.WebService { 

    public WebService() { 

     //Uncomment the following line if using designed components 
     //InitializeComponent(); 
    } 

    [WebMethod] 
    public static List<string> GetCompletionList(string prefixText, int count) 
    { 
     MySqlConnection con = new MySqlConnection(ConfigurationManager.AppSettings["cn"]); 
     if (con.State == ConnectionState.Closed) 
      con.Open(); 
     MySqlCommand cmd = new MySqlCommand("SELECT gotra FROM tbgotra WHERE gotra LIKE '%" + prefixText + "%'",con); 
     List<string> k = new List<string>(); 
     using (MySqlDataReader sdr = cmd.ExecuteReader()) 
     { 
      while (sdr.Read()) 
      { 
       k.Add(sdr["gotra"].ToString()); 
      } 
     } 
     con.Close(); 
     return k; 
    } 
    } 
+0

Вы также можете поместить код базы данных.asmx? –

+0

Я вызываю список объектов из базы данных по моему методу обслуживания. который приведен выше. –

+0

IM жаль, что я имею в виду файл Webservice.asmx, просто хочу убедиться, что это правильно. –

ответ

4

Попробуйте добавить эту строку, я помню, я была такая же проблема, как только где он работал для меня на месте, но не жить.

[WebMethod] 
[System.Web.Script.Services.ScriptMethod] <-- Add this line 
public static List<string> GetCompletionList(string prefixText, int count) 
.... 
+0

спасибо, что ответил на вопрос kay, но не работает в моем случае –

+0

У вас есть обработка ошибок? Вы знаете, что функция фактически запущена? Попробуйте просто добавить строку кода для создания файла на сервере и убедиться, что он создан, чтобы убедиться, что функция работает вообще. Или, но точка останова в коде в режиме отладки ... –

+0

нет обработки ошибок. Думаю, я должен попытаться изменить пакет инструментария управления ajax. –

0

вы должны использовать

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></asp:ToolkitScriptManager> 

в перед TextBox1

+0

Где этот asp: ToolkitScriptManager Я не могу найти ссылку к нему куда угодно? – djack109

+0

просто скопируйте этот образец и измените атрибут и используйте его. – user2178872

0

попробовать эту подпись для веб-метода: public string[] GetCompletionList(string prefixText, int count, string contextKey) Я думаю, расширитель не примет какой-либо другой тип возвращаемого значения, кроме строки []

+0

с использованием аргумента контекстного ключа является необязательным. – Mrudula

0

В моем случае мне пришлось отменить эту строку в файле ASMX

// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService] 
Смежные вопросы