我有一个带有AutoCompleteExtender的文本框,而不是使用webservice我只是在代码后面有一个方法从xml中提取字符串名称列表。现在,每次从文本框开始,AutoCompleteExtender都会显示其中包含所有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>
答案 0 :(得分:2)
GetNames(string prefixText, int count, string contextKey) { return topartists.Take(count).ToList(); }
在源页面中:
<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>
在UseContextKey="True"
标记中添加此属性<asp:AutoCompleteExtender>
。