AutoCompleteExtender每次显示所有500个选项

时间:2012-05-05 02:19:30

标签: c# asp.net autocompleteextender

我有一个带有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>

1 个答案:

答案 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>