【问题标题】:Redisplay results list on AutoCompleteExtender through javascript通过 javascript 在 AutoCompleteExtender 上重新显示结果列表
【发布时间】:2012-01-06 08:25:12
【问题描述】:

我有一个有效的 AutoCompleteExtender 实现。

我想要的是,如果我退出了文本框,并且项目列表消失了,我想从 javascript 代码重新显示列表,而不必再次在文本框中写一些东西(只需重新显示列表基于文本框中的当前过滤器值,单击按钮或其他东西)。我知道如何从代码中获取 AutoCompleteExtender Behavior 对象,因此我只需要知道该对象上的 javascript API 即可重新显示列表。


我已按照this answer 上的 cmets 中的建议尝试过此操作,但无法正常工作:

AutoCompleteEx.showPopup();

我也按照this answer 中的建议尝试过,但没有成功:

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

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

【问题讨论】:

    标签: javascript asp.net ajaxcontroltoolkit autocompleteextender


    【解决方案1】:

    享受:)。这是一项有趣的任务。

    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);
    }
    

    【讨论】:

    • 太棒了!我正在使用缓存,所以我直接去找你的第二个解决方案,它就像一个魅力。
    猜你喜欢
    • 2011-04-27
    • 2012-03-28
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多