因为我正在使用这种方法进行自动完成,这是我的第一次,我确实设法“让它工作”之后 几个小时的研究我还不明白为什么但是方法的行为很奇怪,我得到了自动完成的选项列表,虽然它没有 右侧可能匹配的“home”相反停留在文本框下的第一行。
声明
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="ac" %>
这是我正在使用的标签 ajax部分 背后的代码<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" EnablePartialRendering="true">
</asp:ScriptManager>
<asp:TextBox ID="TBX_theMonthInsert" runat="server" Width="60" />
<ac:AutoCompleteExtender ID="AutoCompleteExtender1" EnableCaching="true"
BehaviorID="AutoCompleteCities" TargetControlID="TBX_theMonthInsert"
ServiceMethod="GenerateMonthNames" MinimumPrefixLength="2"
ContextKey="GenerateMonthNames" CompletionSetCount="2" runat="server"
FirstRowSelected="true" CompletionInterval="350" ShowOnlyCurrentWordInCompletionListItem="true">
</ac:AutoCompleteExtender>
[ScriptMethod()]
[WebMethod]
public static string[] GenerateMonthNames(string prefixText, int count, string contextKey)
{
List<string> items = new List<string>();
items.Add("Oliver");
items.Add("Olsen");
items.Add("learns");
items.Add("how");
items.Add("change");
items.Add("world");
items.Add("engaging");
return items.ToArray();
}
答案 0 :(得分:0)
问题出在GenerateMonthNames
内的搜索/查询
对于prefixText
参数
public static List<string> GenerateMonthNames(string prefixText)
{
List<string> items = new List<string>();
items.Add("Oliver");
items.Add("Olsen");
items.Add("learns");
items.Add("how");
items.Add("change");
items.Add("world");
items.Add("engaging");
var returnList = items.Where(item=>item.Contains(prefixTest)).ToList();
returnList.Sort();
return returnList;
}
这就是我在autoComplete - Code behind部分中遗漏的内容。
当您在目标TextBox中键入内容时,您正在激活“on text changed”触发器以执行ajax自动完成功能。
是触发Ajax的textBox文本Changed Event - 自动完成“command”后面的代码
然后它将prefixText作为参数发送,每个键击都在目标TextBox中,
后面的代码方法(在此示例中为“GenerateMonthNames”)正在列表的每个元素中搜索部分文本(prefixText参数),然后过滤掉(这是我缺少的部分,例如“它不工作”)不包含您在目标TextBox中输入的文本的元素。 我希望它能澄清一些使用ajax autoComplete的新手 面临同样的问题。