多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
小插件 ``` /** * @preserve https://gitee.com/chenjerome/bootstrap-table-merge-cells * * Version 1.0 * * Copyright (c) 2018-2018 chenjj * * Licensed under the MIT License **/ (function ($) { $.fn.mergeCells = function (fields) { var options = $(this).bootstrapTable('getOptions'); if (options.cardView) { return false; } var data = $(this).bootstrapTable('getData', true); if (fields.length == 0 || data.length == 0) { return false; } for(var i = 0, len = fields.length; i < len; i++){ merge(fields, this); fields.pop(); } function merge(fields,target) { //声明一个map计算相同属性值在data对象出现的次数和 var sortMap = {}; for(var i = 0; i < data.length; i++){ var key = ""; for (var f = 0; f < fields.length; f++) { key = key + "#" + data[i][fields[f]]; } if(sortMap.hasOwnProperty(key)){ sortMap[key] = sortMap[key] * 1 + 1; } else { sortMap[key] = 1; } } var index = 0; var fieldName = fields[fields.length - 1]; for(var prop in sortMap){ var count = sortMap[prop] * 1; $(target).bootstrapTable('mergeCells',{index:index, field:fieldName, colspan: 1, rowspan: count}); index += count; } } } })(jQuery); ``` 1. 在bootstraptable的数据加载完成后,即loadSuccess方法调用 ~~~ $('#'+table.id).on('load-success.bs.table', function (data) { var cellFileds = new Array("room","office"); $('#'+table.id).mergeCells(cellFileds); }); ~~~ 其中cellFileds 就是需要合并的单元格的列名,这里的"room"是"小区名称","office"是"省市区" 使用前 ![](https://img.kancloud.cn/28/78/28780e05acda02b926b259f143a399bd_351x291.png) 使用后 ![](https://img.kancloud.cn/da/5b/da5bfbb32908654817437df62b14eaad_351x289.png)