我有一个有效的AutoCompleteExtender实现。
我想要的是,如果我退出文本框,并且项目列表已经消失,我想从javascript代码重新显示列表,而无需再次在文本框中写入内容(只需重新显示列表)基于文本框中的当前过滤器值,通过单击按钮或其他内容)。我知道如何从代码中获取AutoCompleteExtender Behavior对象,所以我只需知道该对象上的javascript API,使我能够重新显示列表。
我按照this answer的评论中的建议尝试了此操作,但没有正常工作:
AutoCompleteEx.showPopup();
我也按照this answer中的建议尝试了此操作,但没有工作:
AutoCompleteEx._onTimerTick(AutoCompleteEx._timer, Sys.EventArgs.Empty);
修改
在对AutoComplete使用的后端代码进行一些调查之后,我想可能问题是,一旦显示,它会检查未来的调用,如果搜索框中的值自上次以来发生了变化,如果没有,则不会显示再次。我还没有发现如何解决这个问题。我尝试了不同的方法来重置值,然后再次设置值,但没有成功。
答案 0 :(得分:3)
享受:)。这是一项有趣的任务。
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);
}