2

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

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

我们正在使用 AjaxControlToolkit 的 1.0.20229.20821 版本,并且我们的目标是 ASP.NET Framework vewrsion 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);
    }  
} 
4

3 回答 3

5

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

于 2010-11-18T13:00:22.830 回答
4

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

于 2012-10-30T17:02:00.590 回答
0

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

于 2015-04-28T06:58:32.723 回答