2012-05-05 9 views
1

WebServiceを使用する代わりに、AutoCompleteExtenderでテキストボックスを使用しています。xmlの文字列名のリストを取得するメソッドがあります。テキストボックス内で開始するたびに、AutoCompleteExtenderに500個の名前がす​​べて表示されます。たとえば、 "Riha"とタイプして "Rihana"と入力すると、 "Riha"で始まる文字列だけが表示されますが、すべての500がすべての順序で表示されると思います。 CompletionSetCount =「5」が、運を設定していない。これに簡単に修正はありますか?AutoCompleteExtenderは毎回すべての500個のオプションを表示します

私は正常に機能していると考えているコードのこの部分は...

ここ
[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

コードに返される内容を制限してみませんか? foreachの代わりにfor(i = 0; i <5; i ++)を実行しますか?またはそのようなもの? – Prescott

+1

Btw、CompletionSetCountがあなたのWebサービスに渡され、それ自体に何も制限されません – Prescott

+0

私は、AutoCompleteExtenderが自動的にテキストボックス内のwhatsをリストと比較したと考えていました。私はテキストボックスに何を渡し、毎回手動ですべての500人の名前と比較する必要がありますか? –

答えて

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> 

<asp:AutoCompleteExtender>タグでこのプロパティUseContextKey="True"を追加します。

関連する問題