BootStrap Table 合并单元格

本文详细介绍如何利用Bootstrap Table插件实现HTML表格中单元格的合并功能,通过具体代码示例展示了如何设置表格数据和使用自定义函数进行单元格合并,适用于网页前端开发人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    为了更直观展示表格的一大堆乱七八糟的数据,合并单元格就派上用场:

    效果:

    代码:

    

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>BootstrapTable合并单元格</title>

    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/bootstrap-table.min.css" rel="stylesheet">

    <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
    <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
    <!--[if lt IE 9]>
      <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
        <table id="bootstrap-table" class="table table-hover"></table>
        <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
        <script src="js/jquery.min.js"></script>
        <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
        <script src="js/bootstrap.min.js"></script>
        <!-- 加载 Bootstrap-Table 插件 -->
        <script src="js/bootstrap-table.min.js"></script>
        <!-- 汉化插件 -->
        <script src="js/bootstrap-table-zh-CN.min.js"></script>
        <script type="application/javascript">
            $('#bootstrap-table').bootstrapTable({
                url: 'json/data.json',
                sidePagination: "true",
                pageSize: "10",
                pagination: true, // 是否分页
                columns: [
                    {
                        field: 'city',
                        title: ''
                    },
                    {
                        field: 'area',
                        title: ''
                    },
                    {
                        field: 'gdp',
                        title: 'GDP'
                    }
                ],
                onLoadSuccess: function () {//当所有数据被加载时触发处理函数
                    var data = $('#bootstrap-table').bootstrapTable('getData', true);//获取当前页数据
                    mergeCells(data,'city',1,$('#bootstrap-table'));
                },
                onPageChange: function (){//当页面更改页码或页面大小时触发
                    var data = $('#bootstrap-table').bootstrapTable('getData', true);
                    mergeCells(data,'city',1,$('#bootstrap-table'));
                },
            });
            function mergeCells(data,fieldName,colspan,target){
                //声明一个map计算相同属性值在data对象出现的次数和
                var sortMap = {};
                for(var i = 0 ; i < data.length ; i++){
                    for(var prop in data[i]){
                        if(prop == fieldName){
                            var key = data[i][prop]     //fieldName的value
                            if(sortMap.hasOwnProperty(key)){
                                sortMap[key] = sortMap[key] * 1 + 1;
                            } else {
                                sortMap[key] = 1;
                            }
                            break;
                        }
                    }
                }
                /*for(var prop in sortMap){
                    console.log(prop,sortMap[prop])
                }*/
                //合并单元格
                var index = 0;
                for(var prop in sortMap){
                    var count = sortMap[prop] * 1;
//注意:合并前Java后台Sql要对field字段排序(order by)
//index:合并起始位置,field:合并列名,colspan:合并成一列,rowspan:合并行数 $(target).bootstrapTable(
'mergeCells',{index:index, field:fieldName, colspan: colspan, rowspan: count}); index += count; } } </script> </body> </html>

 

转载于:https://www.cnblogs.com/zxg-6/p/11284440.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值