关于boostrapTable单元格合并问题
group By
max,sum

插件自带使用方式
//$(target).bootstrapTable(‘mergeCells’, { index: index, field: 字段名, colspan: colspan, rowspan: count });
(把多格合并为一格),所需的参数如下
index:所要合并的格所在行的索引index
field:所在列的字段名
rowspan:合并的行总数目
colspan:合并的列总数目
api说明https://blog.csdn.net/liushuiziyouliu/article/details/80988458

以下为个人封装

 //调用自己写的合并函数
     var arr = ["地市"];//组合键盘 , "区县"
     var cols = ["合计(地市)"];//受影响列,非groupBy分组字段
     var data = $('#table').bootstrapTable('getData', true);
 
 mergeCellsLLJ(data, arr, cols, 1, $('#table'));
/**
		 * 合并列
		 * @param data            原始数据(在服务端完成排序)
		 * @param fieldName      groupBy字段
		 * @param cols影响列
		 * @param colspan=1     合并列总数     
		 * @param target    
**/
function mergeCellsLLJ(data, fieldName, cols,colspan, target) {
    //声明一个map计算相同属性值在data对象出现次数和
    //根据组合键,判断Rowspan的值
    var parList = data[0];
    var count = 0;
    var arrRows = [];
    for (var i = 0; i < data.length; i++) 
    {
        var nowRow = data[i];
        //if (Object.getOwnPropertyNames(parList).length==0)
        //fieldName  parList={},所以循环无效
       
        var sflag = true;
        for (rowindex in fieldName)
         {
            var skey = fieldName[rowindex];
            if (nowRow[skey] != parList[skey])  sflag = false;
        }
		
		//计算并行数RowSpan
        if (sflag)   count ++;
        else
        {
            parList = {}; 
            for (var j = 0; j < fieldName.length; j++) {
                //组件key--&gt;value
                parList[fieldName[j]] = nowRow[fieldName[j]];
            }
            arrRows.push(count); //在赋值之前,先把上次的值存储起来...
            count = 1;
        }
       
        //console.log(i.toString() + "  " + count + "  " + nowRow["xx"] + "  " + nowRow["xx2"]);
        if (i+1== data.length) 
        {
            arrRows.push(count);
        } //最后一行时候添加大数组中  //data.length这里写成了fieldName.length
    }
    
    console.log(arrRows);
    for (var procol in fieldName) {
        var index = 0;
        for (var rI in arrRows) {
            var count = arrRows[rI];
            console.log(count);
            $(target).bootstrapTable('mergeCells', { index: index, field: fieldName[procol], colspan: colspan, rowspan: count 		   });
            index += count;
        }
    }

    for (var procol in cols)
    {
        var index = 0;
        for (var rI in arrRows)
        {
            var count = arrRows[rI];

            $(target).bootstrapTable('mergeCells', { index: index, field: cols[procol], colspan: colspan, rowspan: count });

            index += count;
        }
    }

}


 //调用自自己写的合并函数
     var arr = ["地市"];//组合键盘 , "区县"
     var cols = ["合计(地市)"];//受影响列,非groupBy分组字段
     var data = $('#table').bootstrapTable('getData', true);   

  mergeCellsLLJPage(data, arr, cols, 1, $('#table'), (MergeIndex - 1) * 15);

onLoadSuccess***: function () {
             	//调用,如果后端分页,就这里调用就可以;
            },
            maintainSelected: true,
            ***onPageChange***: function (number, size) {
      			点击页码事件
                MergeIndex = number;
          },
          ***onPostBody***: function (data) {
          		//如果是客户端分页,就这里调用
                if (data &amp;&amp; data.length > 0) {
                     	//调用
                }
              },
//这种可以解决前端***客户端时***分页  的合并问题
/**
		 * 合并列
		 * @param data            原始数据(在服务端完成排序)
		 * @param fieldName      groupBy字段
		 * @param cols影响列
		 * @param colspan=1     合并列总数     
		 * @param target    
		 * @param sindex  合并开始行索引  
**/
        function mergeCellsLLJPage(data, fieldName, cols, colspan, target, sindex) {
            //声明一个map计算相同属性值在data对象出现次数和
            //根据组合键,判断Rowspan的值
            var parList = data[sindex];
            var count = 0;
            var arrRows = [];
            var erowI = sindex + 15 > data.length ? data.length : sindex + 15;
            for (var i = sindex; i < erowI; i++) {
                var nowRow = data[i];
                //if (Object.getOwnPropertyNames(parList).length==0)
                //fieldName  parList={},所以循环无效
                var sflag = true;
                for (rowindex in fieldName) {
                    var skey = fieldName[rowindex];
                    if (nowRow[skey] != parList[skey]) {
                        sflag = false;
                    }
                }
                if (sflag) {
                    count++
                }
                else {
                    parList = {};
                    for (var j = 0; j < fieldName.length; j++) {
                        //组件key-->value
                        parList[fieldName[j]] = nowRow[fieldName[j]];
                    }
                    arrRows.push(count); //在赋值之前,先把上次的值存储起来...
                    count = 1;
                }
                if (i + 1 == erowI) {
                    arrRows.push(count);
                } //最后一行时候添加大数组中  //data.length这里写成了fieldName.length
            }
            var index = 0;
            for (var rI in arrRows) {
                var count = arrRows[rI];
                //Max列1:
                for (var procol in cols) {
                    $(target).bootstrapTable('mergeCells', { index: index, field: cols[procol], colspan: colspan, rowspan: count });
                }
                //groupBy列1:
                for (var procol in fieldName) {
                    $(target).bootstrapTable('mergeCells', { index: index, field: fieldName[procol], colspan: colspan, rowspan: count });
                }
                index += count;
            }
        }

原文地址:https://blog.csdn.net/u013516755/article/details/126688380

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_38746.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注