jqgrid 数据相同单元格合并

1、设置colModel属性,增加cellattr

cellattr = function (rowId, tv, rawObject, cm, rdata) {
    // 设置单元格id
    return 'id=\'araName' + rowId + '\'';
}

2、列表加载完成后调用合并单元格方法

// 设置需要合并的单元格
let mergeColumnList = ['areaName', 'areaId', 'siteName', 'siteId'];
gridComplete: function() {
    // 调用合并单元格方法
    merger('#gridName', mergeColumnList);
}

3、合并单元格方法

/**
 * 合并单元格
 * @param grid_selector
 * @param cellNames
 */
function Merger(grid_selector, cellNames) {
    //得到显示到界面的id集合
    let ids = $(grid_selector).getDataIDs();
    for (let i = 0; i < ids.length; i++) {
        //从上到下获取一条信息
        const before = $(grid_selector).jqGrid('getRowData', ids[i]);
        //定义合并行数
        let rowSpanTaxCount = 1;
        for (let j = i + 1; j <= ids.length; j++) {
            //和上边的信息对比 如果值一样就合并行数+1 然后设置rowspan 让当前单元格隐藏
            const end = $(grid_selector).jqGrid('getRowData', ids[j]);
            let result = true;
            // 对比信息是否都相同 有一个不同则直接跳出循环
            for (let k = 0; k < cellNames.length; k++) {
                if (before[cellNames[k]] !== end[cellNames[k]]) {
                    result = false;
                    break;
                }
            }
            if (result) {
                rowSpanTaxCount++;
                // 设置相同单元格父级类名
                let parentClass = $('#' + ids[i]).attr('class');
                const $curNode = $('#' + ids[j]);
                $curNode.attr('class', parentClass);
                // 设置下一行类名 实现斑马线效果
                $curNode.next() && $curNode.next().attr('class',parentClass.indexOf('secondary') >= 0
                    ? parentClass.replace('ui-priority-secondary', '') : parentClass + ' ui-priority-secondary');
                for (let k = 0; k < cellNames.length; k++) {
                    $(grid_selector).setCell(ids[j], cellNames[k], '', { display: 'none' });
                }
            } else {
                rowSpanTaxCount = 1;
                break;
            }
            // 合并行
            for (let k = 0; k < cellNames.length; k++) {
                $('#' + cellNames[k] + ids[i]).attr('rowspan', rowSpanTaxCount);
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值