通过javascript在AutoCompleteExtender上重新显示结果列表

Redisplay results list on AutoCompleteExtender through javascript

本文关键字:显示 结果 列表 新显示 javascript AutoCompleteExtender 通过      更新时间:2023-09-26

我有一个工作的AutoCompleteExtender实现。

我想要的是,如果我退出了文本框,并且项目列表已经消失,我想从javascript代码重新显示列表,而不必在文本框中再次写一些东西(只需根据文本框中的当前过滤值重新显示列表,点击按钮或其他东西)。我知道如何从代码中获得AutoCompleteExtender行为对象,所以我所需要的就是知道该对象上的javascript API,使我能够重新显示列表。


我已经尝试了这个建议在这个答案的评论,但不工作:

AutoCompleteEx.showPopup();

我也试过这个建议在这个答案,但不工作:

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

编辑:


在对AutoComplete使用的后端代码进行了一些调查后,我认为问题可能在于一旦显示,它就会检查将来的调用,如果搜索框中的值自上次以来发生了变化,如果没有,它就不会再次显示。我还没有找到解决这个问题的方法。我尝试了不同的方法来重置值,然后再次设置值,但没有成功。

欣赏:)。那是一个有趣的任务。

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

或者您可以在扩展程序上将EnableCaching属性设置为true,并使用下面的脚本。此解决方案允许避免额外的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);
}