2010-06-07 26 views
2

我們有一個AutoCompleteExtender鏈接到TextBox。這兩個控件都放在UpdatePanel中,並且UpdatePanel顯示爲使用Javascript庫(Ext.BasicDialog)的彈出對話框。滾動時AutoCompleteExtender定位菜單錯誤

彈出窗口是頁面上的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); 
    } 
} 

回答

5

我通過包含文本框在一個div上設置position:relative固定這一點,自動完成擴展程序。當彈出式面板內部時,擴展器必須使用錯誤的元素來定位。

+0

謝謝,我一直在爲此奮戰2天。 – DoStuffZ 2014-01-30 07:54:20

4

在AutoCompleteExtender後面添加一個空的<div id="AutoCompleteContainer"></div>元素。在AutoCompleteExtender中,添加一個指向此容器的屬性,CompletionListElementID="AutoCompleteContainer"。列表項應該包含在那個div中。

0

我知道這是一箇舊帖子,但認爲這些信息可能會幫助別人。現在有一個新版本的Ajaxtoolkit 15.x版本(2015年4月),它修復了這個問題。從我的閱讀中,CompletionListElementID屬性在不久前已被棄用,至少在不同版本中表現出不同的行爲。我將我的引用升級到了15.x版本,並且只是根據需要開始工作。