我在文本框上有一个自动填充扩展器,它将记录显示为数据库中的列表,但是我点击了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;
}
}
答案 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>