jqGrid合并rowspan

对网上合并的通用方法进行修改
jqgrid 初始化

 $("#jqGrid").jqGrid({
        url: '/weixin/weixin/dayDetail',
        datatype: "json",
        colModel: [
            { label: '日期', name: 'date_tally', width: 80, sortable: true,
            cellattr:function(rowId, tv, rawObject, cm, rdata) {
                return 'id=\'date_tally' + rowId + "\'";
            }},
            { label: '作业类型', name: 'tasktype', width: 80, sortable: true,
                cellattr:function(rowId, tv, rawObject, cm, rdata) {
                return 'id=\'tasktype' + rowId + "\'";
            }},
            { label: '作业地点', name: 'to_type', width: 80, sortable: true},
            { label: '车数', name: 'taskSumCount', width: 90 ,sortable:false},
        ],
        postData:{'startTime': start, 'endTime': end},
        viewrecords: true,
        height: 400,
        rowNum: 30,
        rowList : [10,30,50,100,200],
        rownumbers: true,
        rownumWidth: 50,
        autowidth:true,
        multiselect: false,
        shrinkToFit:false,
        autoScroll: true,
        pager: "#jqGridPager",
        footerrow:true,
        jsonReader : {
            root: "page.list",
            page: "page.currPage",
            total: "page.totalPage",
            records: "page.totalCount"
        },
        prmNames : {
            page:"page",
            rows:"limit",
            order: "order"
        },
        gridComplete:function(){
            var gridName = 'jqGrid';
            Merger(gridName,'date_tally');
            Merger(gridName,'date_tally,tasktype');

            $.ajax({
                type: "POST",
                url: '/weixin/weixin/stateEmpty',
                contentType: 'application/json',
                success: function(r){
                    if(r.code == 0){
                        var list = r.list;
                        // var total=JSON.parse(r.totalInfo);
                        $("#jqGrid").footerData('set', {'date_tally':"在港"+list[0].state_empty, 'tasktype': list[0].cnt,
                                                'to_type':"在港"+list[1].state_empty, 'taskSumCount': list[1].cnt});
                    }
                }
            });
        }
    });```

js调用方法
cellName是数组,长度为1时 根据cellName[0]合并,
长度为2时,根据比较cellName[0]是否相同后在对cellName[1]进行比较合并

function Merger(gridName, CellName) {  
    //得到显示到界面的id集合
    var mya = $("#" + gridName + "").getDataIDs();
    //当前显示多少条
    var length = mya.length;
    for (var i = 0; i < length; i++) {
        //从上到下获取一条信息
        var before = $("#" + gridName + "").jqGrid('getRowData', mya[i]);
        //定义合并行数
        var rowSpanTaxCount = 1;
        for (j = i + 1; j <= length; j++) {
            //和上边的信息对比 如果值一样就合并行数+1 然后设置rowspan 让当前单元格隐藏
            var end = $("#" + gridName + "").jqGrid('getRowData', mya[j]);
            var cellNames = CellName.split(",");
            if(cellNames.length == 1){
                if (before[cellNames[0]] == end[cellNames[0]] ) {
                    rowSpanTaxCount++;
                    $("#" + gridName + "").setCell(mya[j], cellNames[0], '', { display: 'none' });
                } else {
                    rowSpanTaxCount = 1;
                    break;
                }
                $("#" + cellNames[0] + "" + mya[i] + "").attr("rowspan", rowSpanTaxCount);//最后合并需要合并的行与合并的行数
                $("#" + cellNames[0] + "" + mya[i] + "").css("vertical-align","middle");

            }else{
                if (before[cellNames[0]] == end[cellNames[0]] ) {
                    if(before[cellNames[1]] == end[cellNames[1]]){
                        rowSpanTaxCount++;
                        $("#" + gridName + "").setCell(mya[j], cellNames[1], '', { display: 'none' });
                    }else{
                        rowSpanTaxCount = 1;
                        break;
                    }
                } else {
                    rowSpanTaxCount = 1;
                    break;
                }
                $("#" + cellNames[1] + "" + mya[i] + "").attr("rowspan", rowSpanTaxCount);//最后合并需要合并的行与合并的行数
                $("#" + cellNames[1] + "" + mya[i] + "").css("vertical-align","middle");
            }
        }
    }
}

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值