C# AutoCompleteXtender每次都显示所有500个选项
我有一个带有AutoCompleteXtender的文本框,而不是使用Web服务,我只是在代码隐藏中有一个方法,可以从xml中提取字符串名称列表。现在,每次在文本框中启动时,AutoCompleteXtender都会显示所有500个名称。也没有顺序,例如,如果我输入Riha开始输入Rihana,你会认为只有以Riha开头的字符串会出现,但所有500个都会出现,甚至不会以任何顺序出现。我尝试将CompletionSetCount设置为5,但没有成功。有没有简单的解决办法 我相信这部分代码运行正常C# AutoCompleteXtender每次都显示所有500个选项,c#,asp.net,autocompleteextender,C#,Asp.net,Autocompleteextender,我有一个带有AutoCompleteXtender的文本框,而不是使用Web服务,我只是在代码隐藏中有一个方法,可以从xml中提取字符串名称列表。现在,每次在文本框中启动时,AutoCompleteXtender都会显示所有500个名称。也没有顺序,例如,如果我输入Riha开始输入Rihana,你会认为只有以Riha开头的字符串会出现,但所有500个都会出现,甚至不会以任何顺序出现。我尝试将CompletionSetCount设置为5,但没有成功。有没有简单的解决办法 我相信这部分代码运行正常
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> GetNames(string prefixText, int count)
{
XmlDocument xmlArtist = new XmlDocument();
xmlArtist.Load(string.Format(" http://ws.audioscrobbler.com/2.0/?method=chart.gettopartists&api_key={0}&limit=500", key));
List<string> topartists = new List<string>();
foreach (XmlNode node in xmlArtist.SelectNodes("lfm/artists/artist"))
{
topartists.Add(node.SelectSingleNode("name").InnerText.ToString());
}
return topartists;
}
这是.aspx代码
<asp:TextBox ID="txtEnterBand" runat="server" CssClass="txtbox" Width="400px" > </asp:TextBox>
<asp:AutoCompleteExtender ID="txtEnterBand_AutoCompleteExtender" runat="server" TargetControlID="txtEnterBand" ServiceMethod="GetNames" UseContextKey="true" ServicePath="" MinimumPrefixLength="1" CompletionSetCount="5"></asp:AutoCompleteExtender>
在源页面中:
<asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
UseContextKey="True" TargetControlID="txtAuto" ServiceMethod="SearchCustomers"
MinimumPrefixLength="2" CompletionInterval="100" EnableCaching="false"
CompletionSetCount="10" FirstRowSelected="false"
OnClientItemSelected="ClientItemSelected">
</asp:AutoCompleteExtender>
在标记中添加此PropertyUserContextKey=True。为什么不限制代码中返回的内容?代替foreach,为i=0做a;iBtw,CompletionSetCount会传递给您的web服务,它不会限制自身的任何内容。我认为AutoCompleteXtender会自动将文本框中的内容与列表进行比较,我认为我缺少的只是一个属性。我是否必须传递文本框中的内容,并每次手动将其与所有500个名称进行比较?它使用越来越多的值连续调用您的Web服务,例如prefix=mysea,然后prefix=mysear,prefix=mysearc等。所以您应该在方法中进行比较和限制OK,我想这很容易,我只是觉得它自己比较-还有一件事,我怎么能把顶级艺术家名单存储在内存中的某个地方,这样它就不必每次都请求它了。它不允许我从GetNames方法访问会话状态。对如何临时存储该列表有什么建议吗?
<asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
UseContextKey="True" TargetControlID="txtAuto" ServiceMethod="SearchCustomers"
MinimumPrefixLength="2" CompletionInterval="100" EnableCaching="false"
CompletionSetCount="10" FirstRowSelected="false"
OnClientItemSelected="ClientItemSelected">
</asp:AutoCompleteExtender>