2013-10-28 106 views
6

我有一個自動完成擴展器的文本框顯示記錄作爲從數據庫中的列表,但我在點擊texbox並開始打字什麼都不開心。我的HTML代碼ajax自動完成擴展器不工作

<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> 

而且我的web服務是

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

你可以把database.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

謝謝你回答凱,但不在我的情況下工作 –

+0

你有任何錯誤處理?你知道這個函數實際上正在運行嗎?嘗試添加一行代碼在服務器上創建一個文件,並確保其正在創建,以確保該函數可以運行。或者在調試模式下的代碼斷點... –

+0

沒有錯誤處理,我想我應該嘗試更改ajax控制工具包的包 –

0

你應該在使用

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

的TextBox1的

+0

這是什麼asp:ToolkitScriptManager我可以找到沒有參考到任何地方? – djack109

+0

只需複製此示例並更改屬性並使用。使用上下文關鍵參數的 – user2178872

0

之前嘗試這個簽名Web方法: 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]