2

AutoCompleteExtenderの実装が機能しています。

私が欲しいのは、テキストボックスを終了し、アイテムのリストが消えた場合、テキストボックスに何かを再度書き込むことなく、JavaScriptコードからリストを再表示したいということです(現在のリストに基づいてリストを再表示するだけです)ボタンなどをクリックして、テキストボックスの値をフィルタリングします)。コードからAutoCompleteExtenderBehaviorオブジェクトを取得する方法を知っているので、必要なのは、リストを再表示できるようにするそのオブジェクトのjavascriptAPIを知ることだけです。


私はこの回答のコメントで示唆されているようにこれを試しましたが、機能していません:

AutoCompleteEx.showPopup();

私もこの回答で示唆されているようにこれを試しましたが、機能していません:

AutoCompleteEx._onTimerTick(AutoCompleteEx._timer, Sys.EventArgs.Empty);

編集:
オートコンプリートで使用されるバックエンドコードを調査した後、問題は、一度表示されると、検索ボックスの値が前回から変更されているかどうかを確認し、変更されていない場合は変更されないことだと思います。もう一度見せてください。私はこれを回避する方法を知りませんでした。値をリセットしてから値を再設定するためにさまざまな方法を試しましたが、成功しませんでした。

4

1 に答える 1

3

楽しみ :)。それは興味深い仕事でした。

function redisplayAutocompleteExtender() {
    var extender = $find("AutoCompleteEx");
    var ev = { keyCode: 65, preventDefault: function () { }, stopPropagation: function () { } };
    extender._currentPrefix = "";
    extender._onKeyDown.call(extender, ev);
}

または、EnableCachingプロパティをtrueonエクステンダーに設定して、以下のスクリプトを使用することもできます。このソリューションにより、追加のWebサービス呼び出しを回避できます。

function redisplayAutoComplete() {
     var extender = $find("AutoCompleteEx");
     var textBox = extender.get_element();
     textBox.focus();
     var showSuggestions = function(){
          extender._update.call(extender, textBox.value, extender._cache[textBox.value], true);
     };
     setTimeout(showSuggestions, 0);
}
于 2011-11-30T21:07:10.743 に答える