【问题标题】:AutoCompleteExtender positioning menu incorrectly when scrolled滚动时 AutoCompleteExtender 定位菜单不正确
【发布时间】:2011-02-28 19:12:29
【问题描述】:

我们有一个链接到文本框的 AutoCompleteExtender。这两个控件都放置在 UpdatePanel 中,UpdatePanel 使用 Javascript 库 (Ext.BasicDialog) 显示为弹出对话框。

弹出窗口是页面上的一个 div,而不是一个单独的窗口。 问题是当用户在弹出窗口内滚动时,AutoCompleteExtender 将其菜单显示在错误的位置。看起来它正在从弹出窗口顶部获取可见距离,并将菜单定位在弹出窗口内部 html 顶部(不可见)

我们使用的是 1.0.20229.20821 版的 AjaxControlToolkit,我们的目标是 ASP.NET Framework 版本 2.0。

我试图通过将以下 Javascript 附加到 OnClientShown 事件来修复菜单,但它几乎做同样的事情:

function resetPosition(object, args) {

    var tb = object._element; // tb is the associated textbox.
    var offset = $('#' + tb.id).offset();

    var ex = object._completionListElement;
    if (ex) {
        $('#' + ex.id).offset(offset);
    }  
} 

【问题讨论】:

    标签: ajaxcontroltoolkit autocompleteextender


    【解决方案1】:

    我通过在包含 TextBox 和自动完成扩展器的 div 上设置 position:relative 来解决此问题。在弹出面板内时,扩展器一定是使用了错误的元素来定位。

    【讨论】:

    • 谢谢,我已经为此奋斗了 2 天。
    【解决方案2】:

    在 AutoCompleteExtender 之后添加一个空的 <div id="AutoCompleteContainer"></div> 元素。在 AutoCompleteExtender 中,添加一个指向此容器的属性 CompletionListElementID="AutoCompleteContainer"。那么列表项应该包含在该 div 中。

    【讨论】:

      【解决方案3】:

      我知道这是一篇旧帖子,但认为此信息可能对其他人有所帮助。现在(2015 年 4 月)有一个更新的 Ajaxtoolkit 版本 15.x,它修复了这个问题。根据我的阅读,CompletionListElementID 属性在一段时间前已被弃用,至少在不同版本中似乎表现不同。我将我的参考升级到 15.x 版本,它刚刚开始根据需要工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-21
        • 1970-01-01
        相关资源
        最近更新 更多