ajax autocomplete扩展程序无法正常工作

时间:2013-10-28 07:07:15

标签: asp.net ajax autocomplete

我在文本框上有一个自动填充扩展器,它将记录显示为数据库中的列表,但是我点击了texbox并开始输入任何内容。我的HTML代码是

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

5 个答案:

答案 0 :(得分:4)

尝试添加这一行,我记得我曾经遇到过同样的问题,一旦它在我这里工作但不是在现场。

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

答案 1 :(得分:0)

你应该使用

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

在TextBox1之前

答案 2 :(得分:0)

为web方法尝试此签名: public string[] GetCompletionList(string prefixText, int count, string contextKey) 我认为除了字符串[]

之外,扩展器不会接受任何其他返回类型

答案 3 :(得分: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]

答案 4 :(得分:0)

在我的情况下,以下css类存在问题,我已经在源代码中添加了它,但是没有z-index属性。

<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender2" runat="server" 
ClientIDMode="Static" MinimumPrefixLength="1" ServiceMethod="GetAllStaff" 
TargetControlID="txtTeacherName" ServicePath="~/webservices/WebService.asmx" 
CompletionInterval="50" EnableCaching="true" CompletionSetCount="20" 
ShowOnlyCurrentWordInCompletionListItem="true" 
CompletionListCssClass="CompletionListCssClass">
</ajaxToolkit:AutoCompleteExtender>
   
<style>
.CompletionListCssClass {
    font-size: 12px;
    color: #000;
    padding: 3px 5px;
    border: 1px solid #999;
    background: #fff;
    width: 300px;
    float: left;
    position: absolute;
    margin-left: 0;
    overflow: auto;
    height: 200px;
    cursor: pointer;
    z-index: 10000001 !important;
}
</style>