AjaxControlTookit中的AutoCompleteExtender位置错位问题 ListSearchExtender不支持中文的问题...
今天在一個2.0的項目里用AutoCompleteExtender,開始的時候沒發現什么錯誤,后來麻煩接踵而至。無論如何調試,AutoCompleteExtender自動完成的列表都和文本框對不起來,位置錯位,比如文本框在上面,自動完成列表跑到下面去了,如下圖:
在一個頁面中使用多個AutoCompleteExtender時更是亂七八糟。為了搞清楚到底是什么原因,開始逐一排查。把設置的css刪掉,還是錯位。然后新建了一個test頁面,copy同樣的代碼進去,沒想到竟然是正常的!這是為什么呢?
?
然后又把頁面刪除,重新添加控件,一個一個的加,但就算只加一個AutoCompleteExtender,也是錯位的。這就奇怪了。
?
后來終于想到了,因為是后臺管理的界面,在測試的時候,正式的頁面是在框架里面,而test那個頁面是直接運行的。把正式頁面在新窗口中打開,這下終于正常了。
?
看來AutoCompleteExtender控件與框架頁有沖突。目前還沒找到解決辦法,實在不行,只能打開個新窗口編輯了。
?
浪費了一晚上的時間!tmd
?
目前發現ListSearchExtender控件也會出現這種問題,提示語會位置錯亂,估計也是對框架頁支持不好。
?
ps:對于ListSearchExtender不支持中文的問題,網上搜的一篇文章:
http://www.cnblogs.com/hhq80/archive/2008/03/19/1113048.html
?
使用ListSearchExtender時,發現輸入中文沒有顯示,分析了一上ListSearchBehavior.js,發現_isNormalChar函數上有一個e.charCode>6000,而漢字的編碼范圍是19968~40869,這個函數把如果是漢字,就返回false,即不提示顯示,將代碼改這如下即可正常顯示漢字了:
? _isNormalChar : function(e) {
??????? /// <summary>
??????? /// Returns true if the specified charCode is a key rather than a normal (displayable) character
??????? /// </summary>
??????? /// <param name="e" type="Sys.UI.DomEvent">
??????? /// Event info
??????? /// </param>
??????? /// <returns type="Boolean" />
??????? // Walking through Sys.UI.Keys won't work -- Ampersand is code 38 which matches
??????? if (Sys.Browser.agent == Sys.Browser.Firefox && e.rawEvent.keyCode) {
??????????? return false;
??????? }
??????? if (Sys.Browser.agent == Sys.Browser.Opera && e.rawEvent.which == 0) {
??????????? return false;
??????? }
??????? //if (e.charCode && (e.charCode < Sys.UI.Key.space || e.charCode > 6000)) {//修改前的
??????? if (e.charCode && (e.charCode < Sys.UI.Key.space)) {//修改后的
??????????? return false;
??????? }
??????? return true;
??? },
?
?
?
這個需要重新把源代碼編譯一下。很久之前應該做過,記在這里備忘。
?
網上的空間很少有能支持到.net3.5之上的,大部分還是2.0,真是很麻煩啊
轉載于:https://www.cnblogs.com/yanxiaodi/archive/2010/07/17/2296480.html
總結
以上是生活随笔為你收集整理的AjaxControlTookit中的AutoCompleteExtender位置错位问题 ListSearchExtender不支持中文的问题...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSP与mysql的连接
- 下一篇: 辅助类——记录错误信息