当前位置: 代码迷 >> 综合 >> bootstrap插件bootstrap-table-fixed-columns表格列左边右边固定及点击事件
  详细解决方案

bootstrap插件bootstrap-table-fixed-columns表格列左边右边固定及点击事件

热度:52   发布时间:2023-11-08 21:39:23.0

原文作者:https://www.weipxiu.com/7907.html

最近在老的后台项目用到表格固定列这个插件,但这个插件也相对老了,里面还是有些细节问题后续作者也没很好去维护支持,在此记录下我的解决方式

右侧列固定
这个问题分版本,并不是插件不支持,如果你是老版本,那只支持左侧固定,如果jQuery v1.11.0、bootstrap-table.js和bootstrap-table-fixed-columns.min.js是新v1.18.2(其他版本自测)就没问题

固定表格表头和列无法对齐
思路:在表格完全渲染后,将表格的每一列实际占据宽度获取依次赋值给表头,当然,你也可以根据你数据的差异性,将表头宽度赋值给表格tableBody的第一列。

$baseTable.bootstrapTable({rowStyle: function rowStyle(row) {var week = Global.Util.dateIsWeekend(row.dt);var color = week && /Det|History/.test(currentTab) ? '#f00' : '#000';return { css: { color: color } };},height: dataHeight,columns: this.baseTableColumns(),silent: true,fixedColumns: /info_flowTiling/.test(currentTab) ? true : false,fixedNumber: 7,onClickCell:function(field, value, row, $element){console.log(JSON.stringify(field));},onPostBody: function () {// 处理表对齐问题setTimeout(function () {var fixedHeader = $(".fixed-table-header-columns table thead tr:first th");var fixedBody = $('.fixed-table-body-columns tbody tr').eq(0).find('td');if (fixedBody.length) {for (var i = 0; i < fixedBody.length; i++) {fixedBody.eq(i).css("width", fixedHeader.eq(i).find('.fht-cell').outerWidth(true) + 'px')}}})}
});

固定后的列无法点击
网上查了大半天,也没找到解决方式,然后我的解决方式是:因为固定列实际就是悬浮在最上层的table,我把这个表格用css3给穿透,就可以直接点到底下正常表格,找到插件bootstrap-table-fixed-columns.js源码,修改位置如下:

this.$fixedBody.css({width: this.$fixedHeader.width(),height: height,top: top,pointerEvents:'none' // 新增,将悬浮的固定表格给穿透掉
}).show();

小结
毕竟项目和插件都比较老,现在大家都用mvvm去了,关注这块问题的比较少,所以在此记录下,方便维护老项目的小伙伴能看到及时解决问题,顺便附一个中文文档,官方文档看着还是挺累的,查个api实在不便。

我是搬砖工,感谢原文作者的奉献,请大家移步观摩原文作者:https://www.weipxiu.com/7907.html

  相关解决方案