1

Web サービスを使用する代わりに、AutoCompleteExtender を備えたテキスト ボックスがあります。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(string prefixText, int count, string contextKey)
{
   戻る 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>タグに追加します。

于 2012-11-16T10:18:41.097 に答える