BootStrap框架下使用JS动态加载table并点击相关列弹出二级页面

🎈个人公众号:🎈 :✨✨ 可为编程 ✨✨ 🍟🍟
🔑个人信条:🔑知足知不足 有为有不为 为与不为皆为可为🌵
🍉本篇简介:🍉 本片详细说明了BootStrap框架下使用JS动态加载table并点击相关列弹出二级页面,并给出具体操作实例,如有出入还望指正。

关注公众号【可为编程】回复【面试】领取年度最新面试题大全!!!

BootStrap框架下使用JS动态加载table并点击相关列弹出二级页面

在这里记录一下,也是在公司用到的一个例子,刚刚解决,正好趁热打铁。前端页面是采用BootStrap框架搭建的,主要的样式涉及到项目,在这里就不截图了,直接上代码:

一级table动态加载

jsp/html中的table代码:

<table id="data-table" class="table table-striped table-condensed" border="0"
               style="width: 100%; margin-top:21px; background:#163F77">
</table>

根据后台返回的json数据来动态加载出来

    //页面dataTables 表格加载
        xxx.tableControl({
            //日期控件选择器
            dateRange: ".data-range-picker",
            startDay: 15,
            //导出按钮选择器
            exportBtnSelector: ".export-btn",
            tableSelector: "#data-table",
            // 子表点击开关
            childTableClick: true,
            // 启用外部设置时间
            controlDate: true,
            //table opitons
            tableOpitons: {

                childTableRowClick: function (store, fieldName) {
                    console.log("111111");
                    console.log(fieldName);
                    if (fieldName === "") {
                        $(".nav-link.active").removeClass("active show");
                        $("a[href^='#id值']").addClass("active");
                        $("#要显示的二级界面id").modal("show");
                        shinow.jaDataTable("1", "需要打开的二级页面");
                    }
                },
                //主键
                parentIdField: '后台传过来的数据ID',
                //名称
                nameField: '后台传过来的NAME',

                ajaxSuccess: function (data, $table, sum) {
                    //  debugger;
                    if (sum[0] != 0) {
                        sum[2] = xxx.numberUtil.formatLength(sum[2] = sum[1] / parseInt(sum[0]) * 100, 2);
                    } else {
                        sum[2] = 0
                    }
                    return sum;
                },
                columns: [
                    [{
                        //接口中的key
                        field: '后台传过来的ID',
                        //显示名称
                        title: '编号',
                        align: 'left',
                        //是否显示
                        visible: false
                    },
                        {
                            field: '后台传过来的名字',
                            //宽度
                            width: 65,
                            //计算合计
                            // sumable: true,
                            align: "center",
                            highlight: "#ffd800",
                            title: '单位',
                            rowspan: 2
                        },
                        {
                            field: '后台传的其它值',
                            //宽度
                            width: 65,
                            //计算合计
                            sumable: true,
                            align: "center",
                            highlight: "#ffd800",
                            title: 'XXX',
                            rowspan: 2
                        },
                       
                        {
                            //宽度
                            width: 65,
                            //计算合计
                            // sumable: true,
                            align: "center",
                            // highlight: "#ffd800",
                            title: '督促',
                            colspan: 5
                        }
                    ], [{
                        field: '后台传的其它值',
                        //宽度
                        width: 80,
                        //允许弹出明细
                        childClick: true,
                        //计算合计
                        sumable: true,
                        align: "center",
                        highlight: "#ffd800",
                        title: 'XXX'//,
                        // rowspan: 2
                    }, {
                        field: '后台传的其它值',
                        //宽度
                        width: 80,
                        align: "center",
                        highlight: "#ffd800",
                        title: 'XXX'

                    }, {
                        field: '后台传的其它值',
                        //宽度
                        width: 80,
                        align: "center",
                        highlight: "#ffd800",
                        title: 'XXX'
                    }, {
                        field: '后台传的其它值',
                        //宽度
                        width: 65,
                        align: "center",
                        highlight: "#ffd800",
                        title: 'XXX'
                    },
                        {
                            field: '后台传的其它值',
                            //宽度
                            width: 65,
                            align: "center",
                            highlight: "#ffd800",
                            title: '同比'
                        }]
                ],
                fnRowCallback: function (nRow, aData, iDisplayIndex) {
                    $('td:eq(2)', nRow).removeClass("text-center");
                    $('td:eq(2)', nRow).attr('style', 'text-align: left;');
                },
                fnFooterCallback: function (nFoot, aData, iStart, iEnd, aiDisplay) {
                    var total = $("#data-table tbody").data("other");

                    $(nFoot).find('th').eq(3).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.JQSLtotal +
                        "</span>");
                    $(nFoot).find('th').eq(4).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.YJSLtotal +
                        "%</span>");
                    $(nFoot).find('th').eq(5).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.ZGSLtotal +
                        "%</span>");
                    $(nFoot).find('th').eq(6).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.ZGBLtotal +
                        "</span>");
                    $(nFoot).find('th').eq(7).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.YJHBtotal +
                        "%</span>");
                    $(nFoot).find('th').eq(8).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.YJTBtotal +
                        "%</span>");
                    $(nFoot).find('th').eq(9).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.DCSLtotal +
                        "%</span>");
                    $(nFoot).find('th').eq(10).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.DCZGSLtotal +
                        "%</span>");
                    $(nFoot).find('th').eq(11).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.DCZGBLtotal +
                        "%</span>");
                    $(nFoot).find('th').eq(12).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.DCHBtotal +
                        "%</span>");
                    $(nFoot).find('th').eq(13).html("<span style=\"color:#ffd800; font-weight: bold;\">" + total.DCTBtotal +
                        "%</span>");
                    console.log(total);
                }
            },
            //table url地址
            tableParentUrl: $("#path").val() + "访问后台接口路径"
        });

在主table页面中点击数据后展开,当点击展开后的某一列的话,会弹出二级table页面,相当于table主页的二级弹框,js代码如下:

二级table动态产生
//二级table内容
    jaDataTable: function (caseType, tableName) {
        var that = this;
        var orgId = $('#button_org_id').val();
        var startTime = $('#startTime').val();//参数
        var endTime = $('#endTime').val();//参数
        //$("#" + tableName + "_table").dataTable().fnClearTable();//还原初始化了datatable
        //alert(typeof($("#" + tableName + "_table").DataTable()));
        //$("#" + tableName + "_table").DataTable().destroy();//还原初始化了datatable
         var table4 = $('#' + tableName + '_table').DataTable({
            "ordering": false,//去掉排序小图标
            // "processing": true,
            // "serverSide": true,
            "destroy": true,
            searching: false, 'paging': false,
            // "bLengthChange": true, //开关,是否显示每页显示多少条数据的下拉框
            // data: data,
            "ajax": function (data, callback, settings) {//ajax配置为function,手动调用异步查询
                $.ajax({
                    type: "get",
                    url: $("#path").val() + "/xx/xx/xx/xx?startDate=" + startTime.replace(/-/g, "")
                        + "&endDate=" + endTime.replace(/-/g, "") + "&orgId=" + orgId + "&caseType=" + caseType,
                    cache: false,  //禁用缓存
                    // data: param,    //传入已封装的参数
                    dataType: "json",
                    success: function (result) {
                        //setTimeout仅为测试延迟效果
                        setTimeout(function () {
                            //异常判断与处理
                            if (result.errorCode) {
                                swal("", "查询失败", "warning");
                                //$.dialog.alert("查询失败。错误码:" + result.errorCode);
                                return;
                            }
                            //封装返回数据,这里仅演示了修改属性名
                            var returnData = {};
                            returnData.data = result.data;
                            //调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
                            //此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
                            callback(returnData);
                        }, 200);
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        swal("", "查询失败", "warning");
                        //$.dialog.alert("查询失败");
                    }
                });
            },
            "columns": [
                {
                    "data": '后台调用接口返回的json相关字段',
                    title: '对应名称',
                    "width": "20%",
                    searchable: 'false'
                },
                {
                    "data": '后台调用接口返回的json相关字段',
                    title: '对应名称',
                    "width": "20%",
                    searchable: 'false'
                },
                {"data": '后台调用接口返回的json相关字段', title: '对应名称', searchable: 'false', "width": "180px"},
                {"data": '后台调用接口返回的json相关字段', title: '对应名称', searchable: 'false', "width": "180px"},
                {"data": '后台调用接口返回的json相关字段', title: '对应名称', searchable: 'false', "width": "180px"},
                {"data": '后台调用接口返回的json相关字段', title: '对应名称', searchable: 'false', "width": "180px"},
                {"data": '后台调用接口返回的json相关字段', title: '对应名称', searchable: 'false', "width": "180px"}

            ]
        });
    }

关注公众号【可为编程】回复【面试】领取年度最新面试题大全!!!
因为二级弹出页面是分为多个类别的,每个类别都对应着相关的table页,所以在这里需要定义不同的caseType来进行传参,以及对应的table的id值。具体的js代码如下:

$(".nav-link").on("click", function () {
            var href = $(this).attr("href");
            switch (href) {
                case "#yjjqInfo":
                    shinow.jaDataTable("自定义编号,用于传到后台", "table1的id名");
                    break;
                case "#jsspjqInfo":
                    shinow.jaDataTable("自定义编号,用于传到后台", "table2的id名");
                    break;
                case "#scjcjspInfo":
                    shinow.jaDataTable("自定义编号,用于传到后台", "table3的id名");
                    break;
                case "#sahzyclInfo":
                    shinow.jaDataTable("自定义编号,用于传到后台", "table4的id名");
                    break;
                default:
                    break;
            }
        });

最后就是在jsp/html中的二级table的定义,代码如下:

<!--二级页面-->
<div class="modal fade" id="ajja_details_modal">
    <div class="modal-dialog modal-dialog-centered" style="min-width:1490px;color: #fff">
        <div class="modal-content">
            <div class="modal-header">
                问题分类
                <button type="button" class="close" data-dismiss="modal" style="margin-top:-10px;">&times;</button>
            </div>
            <div class="modal-body">
                <div class="panel blank-panel">
                    <div class="panel-heading  m-t-md">
                        <div class="panel-options">
                            <div class="tabbable">
                                <ul class="nav nav-tabs" role="tablist">
                                    <li><a class="nav-link active" href="#yjjqInfo" data-toggle="tab">分类1</a></li>
                                    <li><a class="nav-link" href="#jsspjqInfo" data-toggle="tab"
                                           id="nav-link">分类2</a>
                                    </li>
                                    <li><a class="nav-link" href="#scjcjspInfo" data-toggle="tab"
                                           id="nav-link">分类3</a>
                                    </li>
                                    <li><a class="nav-link" href="#sahzyclInfo" data-toggle="tab" id="nav-link">分类4</a>
                                    </li>


                                </ul>
                            </div>
                        </div>
                    </div>
                    <div class="panel-body">
                        <div class="tab-content">
                            <div class="tab-pane active" id="yjjqInfo">

                                <div class="p-sm border no-top-border">
                                 <button type="submit" class="btn btn-warning start export-btn_yjjq lbox-btn">
                                                                                                         <i class="glyphicon glyphicon-export" aria-hidden="true"></i>
                                                                                                         <span>导出Excel</span>
                                                                                                     </button>
                                    <div class="row">
                                        <div class="col-md-12">
                                            <table class="table table-bordered text-center table_ellipsis"
                                                   id="yjjqInfo_table" style="width: 100%">

                                            </table>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="tab-pane" id="jsspjqInfo">

                                <div class="p-sm border no-top-border">
                                 <button type="submit" class="btn btn-warning start export-btn_jsspjq lbox-btn">
                                                                                                         <i class="glyphicon glyphicon-export" aria-hidden="true"></i>
                                                                                                         <span>导出Excel</span>
                                                                                                     </button>
                                    <div class="row">
                                        <div class="col-md-12">
                                            <table class="table table-bordered text-center table_ellipsis  table_jsspjq"
                                                   id="jsspjqInfo_table" style="width: 100%">

                                            </table>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="tab-pane" id="scjcjspInfo">

                                <div class="p-sm border no-top-border">
                                  <button type="submit" class="btn btn-warning start export-btn_scjcjsp lbox-btn">
                                                                                                         <i class="glyphicon glyphicon-export" aria-hidden="true"></i>
                                                                                                         <span>导出Excel</span>
                                                                                                     </button>
                                    <div class="row">
                                        <div class="col-md-12">
                                            <table class="table table-bordered text-center table_ellipsis table_scjcjsp"
                                                   id="scjcjspInfo_table" style="width: 100%">

                                            </table>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="tab-pane" id="sahzyclInfo">

                                <div class="p-sm border no-top-border">
                                <button type="submit" class="btn btn-warning start export-btn_sahzycl lbox-btn">
                                                                                                         <i class="glyphicon glyphicon-export" aria-hidden="true"></i>
                                                                                                         <span>导出Excel</span>
                                                                                                     </button>
                                    <div class="row">
                                        <div class="col-md-12">
                                            <table class="table table-bordered text-center table_ellipsis table_sahzycl"
                                                   id="sahzyclInfo_table" style="width: 100%">

                                            </table>
                                        </div>
                                    </div>
                                </div>
                            </div>

                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

</div>

导出的功能是采用js来进行的,具体的js代码在下一篇文章进行介绍,也是在工作中遇到的一种前端布局类型,记录一下,方便以后使用。如有不对的地方,还望多多指正!!!

这里是一个真诚的***青年技术交流QQ群:761374713***,不管你是大学生、社畜、想学习变成的其他人员,欢迎大家加入我们,一起成长,一起进步,真诚的欢迎你,不管是技术,还是人生,还是学习方法。有道无术,术亦可求,有术无道,止于术。在这里插入图片描述

欢迎大家关注【可为编程】,成长,进步,编程,技术、掌握更多知识!
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Bootstrap Table 是一款非常流行的 jQuery 表格插件,它不仅提供了丰富的功能和样式,还支持动态合并行和列。在使用 Bootstrap Table 时,如果需要对表格的标题(即表头)进行合并,可以通过以下方法实现: 1. 使用 colspan 属性 在表格中,可以使用 colspan 属性将多个单元格合并为一个单元格。因此,如果需要合并表头中的多个单元格,只需在 HTML 代码中设置相应的 colspan 值即可。 例如,如果需要将第一列和第二列的表头合并成一个单元格,可以这样写: ```html <thead> <tr> <th colspan="2">姓名</th> <th>年龄</th> <th>性别</th> </tr> </thead> ``` 2. 使用表格插件 API Bootstrap Table 提供了一些 API 方法,可以通过 JavaScript 代码动态地合并行和列。其中,`mergeCells(options)` 方法可以用于合并单元格,它接受一个选项对象作为参数,可以设置要合并的单元格的起始行、起始列、结束行和结束列。 例如,如果需要将第一行的第一列和第二列合并成一个单元格,可以这样写: ```javascript $('#table').bootstrapTable('mergeCells', { index: 0, field: 'name', colspan: 2, }); ``` 其中,`index` 属性表示要操作的行的索引(从 0 开始),`field` 属性表示要操作的列的字段名,`colspan` 属性表示要合并的列数。 类似地,`mergeCells(options)` 方法也可以用于合并行,只需将 `colspan` 属性改为 `rowspan` 即可。此外,还可以使用 `mergeCells(options, mergeFooter)` 方法合并表格底部的行或列,其中 `mergeFooter` 参数表示是否合并底部。 总之,Bootstrap Table 提供了多种方法用于动态合并行和列,可以根据实际需求选择合适的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可为编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值