1

オートコンプリートにこのメソッドを使用しているのは初めてです。数時間の調査の後、なんとか「機能させる」ことができました。理由はまだわかりませんが、メソッドの動作がおかしいので、オートコンプリートのオプションのリストは、正しい一致に「ホーム」ではなく、テキストボックスの下の最初の行にとどまります。

宣言する

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="ac" %>

これは私が使用しているタグですiaspx

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"  EnablePartialRendering="true">
</asp:ScriptManager>

                    <asp:TextBox ID="TBX_theMonthInsert" runat="server" Width="60" />

ajax部分

<ac:AutoCompleteExtender ID="AutoCompleteExtender1" EnableCaching="true" 
BehaviorID="AutoCompleteCities" TargetControlID="TBX_theMonthInsert" 
        ServiceMethod="GenerateMonthNames" MinimumPrefixLength="2"
        ContextKey="GenerateMonthNames"  CompletionSetCount="2" runat="server" 

        FirstRowSelected="true" CompletionInterval="350" ShowOnlyCurrentWordInCompletionListItem="true">
                   </ac:AutoCompleteExtender>

背後にあるコード

        [ScriptMethod()]
        [WebMethod]
        public static string[] GenerateMonthNames(string prefixText, int count, string contextKey)
        {
            List<string> items = new List<string>();
            items.Add("Oliver");
            items.Add("Olsen");
            items.Add("learns");
            items.Add("how");
            items.Add("change");
            items.Add("world");
            items.Add("engaging");


            return items.ToArray();
        }
4

1 に答える 1

0

GenerateMonthNames 問題は、prefixTextパラメータ内の/queryの検索にありました

    public static List<string> GenerateMonthNames(string prefixText)
    {
      List<string> items = new List<string>();
         items.Add("Oliver");
         items.Add("Olsen");
         items.Add("learns");
         items.Add("how");
         items.Add("change");
         items.Add("world");
         items.Add("engaging");  

         var returnList = items.Where(item=>item.Contains(prefixTest)).ToList();
         returnList.Sort();
         return returnList; 
     }

これは、オートコンプリートで欠落していたものです-セクションの背後にあるコード。

ターゲットのTextBox内に入力しているときは、ajaxオートコンプリート機能を実行するための「テキスト変更時」トリガーをアクティブにしています。

AjaxをトリガーするのはtextBoxテキストの変更されたイベントです-オートコンプリート「コマンド」の背後にあるコード

次に、ターゲットのTextBox内の各キーストロークでprefixTextをパラメータとして送信します。

メソッドの背後にあるコード(この例では「GenerateMonthNames」)は、リストの各要素内の部分的なテキスト(prefixTextパラメーター)を検索し、次に、次の要素をフィルターで除外します(つまり、「機能していなかった」など、欠落していた部分)。ターゲットTextBoxに入力したテキストは含まれていません。同じ問題に直面しているajaxオートコンプリートの使用に不慣れな他の人々が明らかになることを願っています。

于 2012-09-19T06:57:45.620 に答える