反馈已提交

网络繁忙

JS实现单元格扩展后内容相同进行合并

  • 文档创建者:axing
  • 历史版本:6
  • 最近更新:Carly 于 2024-09-26
  • 1. 概述

    1.1 问题描述

    如下,省份和城市这两行是横向扩展出来的,当省份和城市相同时,如何合并单元格呢

    image.png

    想要实现的效果如下

    image.png

    1.2 实现思路

    使用 JS 判断两个单元格的值是否相等,相等时合并单元格。

    2. 示例

    2.1 新建模板

    1)新建一张普通报表

    2)新建数据库查询ds1,SQL 语句如下:

    SELECT substr(订购日期,1,4) as 年份,货主省份,货主城市,

    count(1) as 数量

    FROM S订单

    where 货主省份 in ('上海','北京','天津','山东','山西')

    group by substr(订购日期,1,4),货主省份,货主城市 

    3)报表主体设计如下,其中B1 , B2 单元格设置「横向扩展」,A3,B3 单元格为「纵向扩展」。

    2.2 添加加载结束事件

    点击菜单栏「模板>模板Web属性>分页预览设置」,选择「为该模板单独设置」,添加一个「加载结束」事件,如下图所示:

    Javascript 代码如下:

    $(".x-table tr:first td").each(function() {
    // 遍历第一行单元格
    var id = $(this).attr("id"); // 提取单元格的id属性
    // 判断当前单元格的值是否与下一行对应的单元格的值相等
    if ($(this).text() == $("td[id^=" + id.substr(0, 1) + "2-" + "]").text()) {
    $("td[id^=" + id.substr(0, 1) + "2-" + "]").remove(); // 删除下一行对应的单元格
    $(this).attr("rowspan", 2); // 当前单元格合并两行
    }
    });
    // 解决第二行后合并失效的问题
    $(".x-table tr:eq(3) td").each(function() {
    // eq(3)是第四行,按数组索引拿
    var id = $(this).attr("id"); // 提取单元格的id属性
    // 判断当前单元格的值是否与下一行对应的单元格的值相等
    if ($(this).text() === $("td[id^=" + id.substr(0, 1) + "5-" + "]").text()) {
    // 如果是第五列,这里得写5,而不是按数组索引拿
    $("td[id^=" + id.substr(0, 1) + "5-" + "]").remove(); // 删除下一行对应的单元格
    $(this).attr("rowspan", 2); // 当前单元格合并两行
    }
    });

    2.2 效果预览

    保存模板,点击分页预览,如下图所示:

    image.png

    注1:不支持移动端。

    注2:不支持导出和打印。

    3. 模板下载

    点击下载模板:扩展后连续单元格合并.cpt

    附件列表


    主题: 报表应用
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持