前言:最近項目里面需要用到表格的凍結(jié)列功能,所謂“凍結(jié)列”,就是某些情況下表格的列比較多,需要固定前面的幾列,后面的列滾動。遺憾的是,bootstrap table里自帶的fixed column功能有一點bug,于是和同事討論該如何解決,于是就有了這篇文章。
一、起因回顧最近項目里面有一個表格需求,該表格列是動態(tài)產(chǎn)生的,而且列的數(shù)量操作一定值以后就會出現(xiàn)橫向滾動條,滾動的時候需要前面幾列固定。也就是所謂的excel的凍結(jié)列功能。該如何實現(xiàn)呢?不用多說,當(dāng)然是查文檔,于是找到了這篇issues.wenzhixin/bootstrap-table/index.html#extensions/fixed-columns.html。谷歌瀏覽器效果如下:
第一列固定
貌似問題完美解決!可是,事與愿違,很遺憾,上面說了,這是谷歌瀏覽器的效果,沒有問題。我們來看看IE里面
IE11效果:
IE10效果:
很顯然,不管是IE內(nèi)核版本多少,凍結(jié)的列里面的內(nèi)容都無法顯示。怎么辦?這可為難死寶寶了!
二、解決方案還好有萬能的開源,查看該頁面源代碼發(fā)現(xiàn)可以找到凍結(jié)列這個js的源碼。
點擊進入可以看到這個js的所有源碼,找到源碼就好辦了,我們試著改改源碼看是否能解決這個bug。
我們在bootstrap-table下面的extensions文件夾下面新增加一個文件夾fixed-column
下面就貼出我們改好的源碼:
bootstrap-table-fixed-columns.js修改后的源碼 bootstrap-table-fixed-columns.css修改后主要修改的地方:
1)源碼里面將thead和tbody分別封裝成了一個單獨的表格,修改后將thead和tbody放到了一個table里面;
2)依次遍歷凍結(jié)的列放入到固定的tbody里面;
其實也就改了那么幾個地方,就能完美解決IE的bug。我們先來看看效果:
IE11
IE10
IE8
我們再來看看如何使用。
1、引用js和對應(yīng)的css
script src="~/Content/bootstrap-table/extensions/fixed-column/js/bootstrap-table-fixed-columns.js" /script link href="~/Content/bootstrap-table/extensions/fixed-column/css/bootstrap-table-fixed-columns.css" rel="stylesheet" /
2、js調(diào)用如下
加兩個參數(shù)fixedColumns和fixedNumber即可,什么意思不用過多解釋,是否凍結(jié)列、凍結(jié)列的列數(shù)。還有一點需要說明的是,這里調(diào)用的時候不能指定它的height,如果指定height,表格的凍結(jié)顯示會有問題。
以上就是表格凍結(jié)關(guān)于IE兼容性問題的解決方案,如果你也正好用到bootstrap table 的列凍結(jié),呵呵,福利來了??傮w上來說,就是在原有擴展js的基礎(chǔ)上面做了一些小小的修改。能用,如果大伙覺得有什么問題,歡迎指出。