創(chuàng)建4個以上table,期望table可以上下左右滑動,發(fā)現(xiàn)easyui的datagrid可以輕松實(shí)現(xiàn)這個功能。
但是table加載過程中,總有某個table的frozencolumns不能完全顯示,具體如下圖:

前三列“序列”,“列名”,“列一” 為凍結(jié)列,使用Chrome,右鍵選擇檢查元素,發(fā)現(xiàn)“列一”列其實(shí)是有值的。與其它正常顯示的表格對比,發(fā)現(xiàn)EasyUI自動生成的html代碼中,class=“panel datagrid” DIV 最后一個style節(jié)點(diǎn)中,缺少frozencolumn的樣式數(shù)據(jù),導(dǎo)致在table比較多并且數(shù)據(jù)為空的情況下,frozencolumns顯示不全。

解決辦法:
1. 在整個解決方案中搜索<style type=\"text\css\" easyui=\"true\">,在jquery.easyui.min.js發(fā)現(xiàn)如下代碼;

逆向查代碼發(fā)現(xiàn),jquery.easyui.min.js中調(diào)用add函數(shù)的語句如下:


在add style之后,又執(zhí)行了dirty操作和clean操作,在clean操作中又調(diào)用了remove函數(shù),如下圖 remove函數(shù)是根據(jù)dirty函數(shù)中加入的cellSelectorPrefix進(jìn)行刪除操作的。所以,應(yīng)該是dirty函數(shù)中加入的cellSelectorPrefix,導(dǎo)致程序多刪了正確的style。

頁面調(diào)試看到,只要class中包含".datagrid-cell-c1"的樣式都會被刪除,樣式".datagrid-cell-c17-xxxx"的樣式也被誤刪,這樣就導(dǎo)致frozencolumns顯示不全。

目前我暫時的解決辦法是,在調(diào)用dirty函數(shù)的時候,將cellSelectorPrefix改成cellSelectorPrefix+“-”,這樣就不會把樣式".datagrid-cell-c17-xxxx"誤刪了。
在jquery.easyui.min.js中修改的代碼如下,就能修復(fù)這個問題了。

發(fā)現(xiàn)版本jquery-easyui-1.6.1以及之前的版本都有這個問題。
如果大家有更好的解決辦法,歡迎留言交流。