1

我有一个带有 AutoCompleteExtender 的文本框,而不是使用 Web 服务,我只是在代码后面有一个方法,它从 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>
4

1 回答 1

2
GetNames(字符串前缀文本,整数计数,字符串 contextKey)
{
   返回到partists.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>标签中添加此属性。

于 2012-11-16T10:18:41.097 回答