AjaxControlTookit中的AutoCompleteExtender位置錯位問題 ListSearchExtender不支援中文的問題

來源:互聯網
上載者:User

今天在一個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,真是很麻煩啊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.