所以我试图从AJAX Control Toolkit实现AutoCompleteExtender工具。
以下是我的ASPX页面上AutoCompleteExtender的实现:
<asp:TextBox runat="server" ID="CustomerTextBox" CssClass="form-control" AutoComplete="off" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="CustomerTextBox"
CssClass="text-danger" ErrorMessage="The Customer field is required." Display="None" />
<ajaxToolkit:AutoCompleteExtender ID="CustomerAutoCompleteExtender" runat="server" TargetControlID="CustomerTextBox"
MinimumPrefixLength="1" EnableCaching="true" CompletionSetCount="1" CompletionInterval="1000"
ServiceMethod="GetAllCustomerNames">
</ajaxToolkit:AutoCompleteExtender>
这是代码隐藏文件中实现的服务方法:
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static string[] GetAllCustomerNames(string prefixText, int count)
{
List<string> allCustomerNames = new List<string>();
List<Customer> allCustomers = GetAllCustomers();
foreach (Customer customer in allCustomers)
{
if (customer.CustomerName.Contains(prefixText))
{
allCustomerNames.Add(customer.CustomerName);
}
}
return allCustomerNames.ToArray();
}
我面临的问题是每当我在文本框中输入一个字符时,就会触发Page_Load事件而不是 GetAllCustomerNames 方法。有人可以帮我找到我出错的地方吗?
其他信息:
答案 0 :(得分:0)
尝试[System.Web.Services.WebMethod]而非WebMethod()并删除下一行。
您在TextBox上设置AutoPostBack="true"
,只需删除AutoPostBack或将其设置为false
。