easyui使用datagrid時列名包含特殊字符導致表頭與數據錯位的問題


做一個用easyui的datagrid顯示數據的功能時發現表格的列頭與數據錯位了,而且這個現象不總是能重現,一直沒搞清楚原因。后來偶然在控制台看出了一點端倪:

推測表頭或者單元格的class名應該是用字段名拼出來的,如果含有特殊字符可能違反了css的命名規則(權威的css命名規則暫時沒有找到,這篇文章稍有提到)。

我找了個有特殊字符的列的數據,發現果然歪了。驗證了想法。

由於項目的特殊性,數據庫的表是動態創建的,也就是部分列名是由用戶輸入的,比較隨意(當然,列頭是另外是有顯示名稱的)。

所以這個問題可以從兩方面解決:

①對用戶輸入進行限制。

②找到easyui拼接class名稱的地方,處理掉特殊字符。(最后也確實在jquery.easyui.min.js里找到了)

其實easyui作者也對列名進行了一定的處理,只是沒有考慮到這里的特殊情況。所以修改這個正則表達式就可以了(這里就不貼修改后的正則表達式了),或者限制用戶輸入與修改個正則表達式相結合。

 

 

后來看到這篇jQuery EasyUI datagrid列名包含特殊字符會導致表格錯位里也提到了這個問題的處理方法,覺得作者的這個辦法很好,將字符替換為十六進制碼

...field.replace(/[\.|\s]/g, "-").replace(/./g,function($1){return $1.charCodeAt(0).toString(16);});

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM