bootstrap-Table sub父子表的使用

完美解决bootstraptable父子表子表渲染问题 bootstraptable父子表,子表找不到bootstraptable初始化方法的解决方案 立即下载

概述

今天项目里面要用到bootstrapTable里面的Sub Table也就是我们说的父子表,之前也没做过,so直接到官网找文档,卡的不行,算了只能网上百度找了几篇案例,也都是不全面。搞了一下午,终于有点效果。今天记录一下,加深印象,也给像我一样寻找案例的朋友一点思路。

环境:springboot+freemarker(jsp也是一样做法)

先看一下官网的效果图http://issues.wenzhixin.net.cn/bootstrap-table/#options/sub-table.html

本人最后效果

页面是丑了点,解决了需求就好。

开始第一步在页面中引入bootstrapTable的js和css文件
官方下载地址
https://github.com/wenzhixin/bootstrap-table/archive/develop.zip
<link href="${cp}plugins/bootstrap-table/bootstrap-table.css" rel="stylesheet" media="screen">
<script src="${cp}plugins/bootstrap-table/bootstrap-table.js" type="text/javascript"></script>
    <script src="${cp}plugins/bootstrap-table/bootstrap-table-zh-CN.js" charset="UTF-8" type="text/javascript"></script>

准备好后,我们在页面定义一个

<table id="table"></table>

然后在js中初始化表格
我们知道bootstrapTable初始化有两种方式,一种是通过table 的data-url属性在后台查询,二是页面加载后通过js直接加载数据,我们在父表中采用第一种通过url从后台查询出列表数据,子表数据我们通过ajax同步获取数据后在通过第二种方式初始化子表。这里其实是有个坑,有个坑,有个坑 ,重要的事情说三遍,之前这里折腾了几个小时,看网上案例都是采用第一种方式去加载父表和子表,我不知道他们有没有测试过,反正我是无法加载出子表数据。也就是说子表的数据是获取到了,但是无法展示到页面里。找了好久,最后怀疑是异步的原因,也就是说,bootstrapTable通过url获取数据后,没等数据加载,就把页面渲染了,最后我尝试先用ajax同步获取数据后,在初始化子表。子表里面数据就出来了。这可能真关系到加载顺序 ,这只是我个人结论,如果有另有高人知道这一原因,希望能及时指出。

下面我们在代码里走一遍吧


$(function() {
//先销毁表格,在初始化
    $('#table').bootstrapTable('destroy').bootstrapTable({
        columns: [{
            checkbox: true
        },
        {
            title: '列名一',
            field: 'id',
            align: 'center',
        },
        {
            title: '列名二',
            field: 'name',
            align: 'center',
            formatter: function(value, row, index) {
               //处理格式化数据
            }
        },
        {
            title: '添加时间',
            field: 'createDate',
            align: 'center',
        }],
        url: "user/list/",      //请求数据的地址URL
        method: 'post',  //请求方式(*)
        striped: true,  //是否显示行间隔色
        cache: false,  //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
        pagination: true,  //是否显示分页(*)
        sortable: true,  //是否启用排序
        sortOrder: "desc", //排序方式
        sidePagination: "server",  //分页方式:client客户端分页,server服务端分页(*)
        pageNumber: 1, //初始化加载第一页,默认第一页
        pageSize: 10,  //每页的记录行数(*)
        pageList: [20, 50, 100],  //可供选择的每页的行数(*)
        showColumns: false,  //是否显示所有的列
        showRefresh: false,  //是否显示刷新按钮
        minimumCountColumns: 2,  //最少允许的列数
        clickToSelect: true,   //是否启用点击选中行
        height: 800,
        detailView: true,  //是否显示父子表    *关键位置*
        queryParamsType: "limit",
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        checkboxHeader: true,
        search: false,
        singleSelect: true,
        striped: true,
        showColumns: true,  // 开启自定义列显示功能
        responseHandler: function responseHandler(sourceData) {
            //这里要做分页,所以对返回的数据进行了处理
            return {
                "total": sourceData.total,  // 总条数
                "rows": sourceData.rows // 返回的数据列表(后台返回一个list集合)
            };
        },
        queryParams: function queryParams(params) { 
            //设置查询参数,就是把页面需要查询的字段通过jquery取值后传到后台
            var param = {  
                id: $("input[name='id']").val(),
                name: $("input[name='name']").val(),
                pageSize: params.limit, // 页面大小
                pageNumber: (params.offset)/10+1 // 页码
            };
            return param;
        },
        //注册加载子表的事件。你可以理解为点击父表中+号时触发的事件
        onExpandRow: function(index, row, $detail) {
            //这一步就是相当于在当前点击列下新创建一个table
            var cur_table = $detail.html('<table></table>').find('table');
            var html = "";
            html += "<table class='table'>";
            html += "<thead>";
            html += "<tr style='height: 40px;'>";
            html += "<th>用户id</th>";
            html += "<th>用户姓名</th>";
            html += "</tr>";
            html += "</thead>";
            $.ajax({
                type: "post",
                url: "user/list",       //子表请求的地址
                data: {id:row.id,name:row.name},//我这里是点击父表后,传递父表列id和nama到后台查询子表数据
                async: false,           //很重要,这里要使用同步请求
                success: function(data) {
                    html += '<ul class="list-group" >';
                    //遍历子表数据
                    $.each(data.rows,
                    function(n, value) {
                        html += "<tr  align='center'>" 
                            + "<td>" + value.id + "</td>" 
                            + "<td>" + value.name + "</td>" 
                            + "</tr>";
                    });
                    html += '</table>';
                    $detail.html(html); // 关键地方
                }
            });
        },
    });
});

搞定,办法是笨了点,效果还是实现了。欢迎大家有更好办法的 交流交流!!

MTGS与3D高斯泼溅:如何用多轨迹数据重建自动驾驶场景(附代码解析) 本文深入解析了MTGS(多轨迹高斯泼溅)技术在自动驾驶场景重建中的工程实践。该方法通过分层场景表示,巧妙融合多轨迹数据,利用3D高斯泼溅技术统一处理静态几何与动态物体,有效解决了复杂环境下的重建难题。文章结合代码,详细阐述了其实现框架、损失函数设计及优化策略,为构建高保真数字孪生场景提供了实用指南。 阅读详情

相关推荐

SA8155 QNX显示框架与WFD配置实战:从黑屏排查到高可用设计

智能座舱中,车载显示系统的稳定性直接关系到驾驶安全。QNX作为高安全性的操作系统,在座舱仪表、ADAS等关键域中承担着确定性调度与隔离职责,其图形体系Screen与显示输出框架WFD协同工作,构成从应用渲染到面板点亮的完整链路。WFD配置涉及时序、通道映射与行为控制,任何参数偏差或加载异常都可能导致黑屏、花屏等故障。为保障系统可用性,需结合心跳监控、日志采集、通路重试与备份显示切换等策略,构建兼具快速感知与恢复能力的防御体系。本文以SA8155平台为例,深入拆解QNX显示框架的架构与WFD配置要点,结合一次

weixin_29165465的博客 205

BootstrapTable父子表

3-2、在要增加了一个新表的时候,直接清空表的数据,添加新数据就使用sppend就行了,清空数据使用removeAll方法。对比使用create方法的话,removeAll比create方法性能优化方面强很多,不建议使用create方法创建表。这两行代码不能少,这样就在父表下创建了子表,子表的数据就是row,index,$detail,对应着子表可以去取数据。1-2、在父表的每一行的最前面显示一个加号,点开就是子表信息。2-3、css部分可以自己随意发挥。

clearlovel的博客 1687

国产PHY芯片YT8512H替代LAN8742A的实战指南(STM32F407平台)

本文详细介绍了在STM32F407平台上,使用国产PHY芯片YT8512H替代LAN8742A的完整实战过程。文章深入剖析了硬件设计中的关键信号连接差异(如CRS_DV与RXDV复用)、时钟布线要点,并提供了软件驱动修改、PHY配置及调试排错的系统指南,旨在帮助工程师高效完成国产化替代,规避常见陷阱。

defi6farmer的博客 854

JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)

前言:上篇 JS组件系列——表格组件神器:bootstrap table 简单介绍了下Bootstrap Table的基础用法,没想到讨论还挺热烈的。有园友在评论中提到了父子表的用法,今天就结合Bootstrap table的父子表和行列调序的用法再来介绍下它稍微高级点的用法。 bootstrap table系列: JS组件系列——表格组件神器:bootstrap table JS组件系...

weixin_34323858的博客 974

别再为H5扫码头疼了!用Vue3 + vue-qrcode-reader,5分钟搞定移动端摄像头调用(附完整代码)

本文详细介绍了如何使用Vue3和vue-qrcode-reader快速实现移动端扫码功能,解决H5开发中常见的摄像头调用和兼容性问题。通过完整的代码示例和优化技巧,帮助开发者高效集成二维码识别功能,提升用户体验和开发效率。

weixin_33737134的博客 513

Unity序列帧动画输出全攻略:Recorder+Timeline实战与透明通道处理

序列帧动画是游戏开发、影视动画和UI动效中的基础技术,指将连续动作分解为一系列静态图像并按序播放,形成动态视觉效果。其原理是通过时间轴精确控制每一帧的内容与时机,实现动画的逐帧呈现。在实时渲染领域,序列帧输出技术价值显著,它能够将动态内容高质量地转换为静态图像序列,便于跨平台复用、后期合成与资源分发。应用场景广泛,包括角色动画导出、技能特效制作、宣传片素材生成等。本文聚焦Unity引擎,深入解析如何利用Recorder与Timeline工具链,高效输出带Alpha透明通道的PNG序列帧,并重点攻克透明通道处

weixin_31556767的博客 327

bootstrap 操作 父子表,bootstrap-table 父子表入门篇

/*用window.onload调用myfun()*/window.onload=myfun;functionmyfun() {$("#report").bootstrapTable({url:'/dashboard',//父表加载数据用到的urlmethod:'get',detailView:true,//父子表,为true会在父数据前添加 “+”//sidePagination: "serve...

weixin_31569663的博客 1593

基于模型上下文协议(MCP)的可插拔式临床AI工具链Clinical DS研究(下)

本研究深入探讨了医疗AI在临床落地中的核心矛盾,即如何从“模型能答”迈向“系统可信、可用、可追溯”。为解决此矛盾,我们创新性地提出并详细设计实现了一套基于模型上下文协议(MCP)的**“可插拔式临床AI工具链”**架构。通过将复杂的医疗AI系统解构为Host、MCP Server和标准协议三层,并将各类能力(临床决策、影像分析、合规审计)封装为标准的、可独立演进的Server,我们成功地构建了一个模块化、高内聚、低耦合的系统。

AllenLV的博客 1380

bootstrap-table实现新建商品规格表及子表

公司有个针对手机维修等维修类项目的需求: 在新建商品时,创建一个表格,表格内可动态创建各项目,各项目又可动态创建各个子项目,如图: 该功能全程使用bootstrap-table组件实现, 遇到几个问题记录一下: 创建子表时OnExpandRow事件中的参数$detail无法传值 onExpandRow: function(index, row, $detail) { // addSub(row, index, $detail); oTableInit

gba3455的博客 1999

uniapp - H5网页uni.getLocation报错getLocation:fail Geolocation permission denied.Get ipLocation failed.

uni.getLocation getLocation:fail Geolocation permission denied.Get ipLocation failed.,uni.getLocation定位失败,uni-app getLocation()无法获取定位,一直fail()uniapp移动端h5网页,uniApp微信内置浏览器定位失败,如何解决这个问题,uniapp h5 uni.getLocation获取位置失败怎么办,UNI-APP获取当前位置,uni.getLocation定位失败,unia

🏆 前端领域优质创作者 4241

【ROS】Nav2源码之nav2_collision_monitor(碰撞监测)详解

nav2_collision_monitor碰撞监视器是一个节点,为机器人提供了一个额外的安全级别。它使用来自传感器的数据,执行若干与避免碰撞相关的任务,绕过成本图和轨迹规划器,监测是否需要紧急停止或者减速。

郭老二 1455

Bootstrap Table 父子表应用 (detaileView 二级表格)

必要属性 : detailView: true, detailFormatter: function (index, row) { var html = []; $.each(row, function (key, value) { html.push('<p><b>' + key + ':</b> ' + value + '</p>'); }) }, icons: { detailOpen: 'glyphico

weixin_43959963的博客 2628

检测头篇 | 手把手教你如何去更换YOLOv8的检测头为ASFF_Detect

自适应空间特征融合(ASFF)的主要原理旨在解决单次检测器中不同尺度特征的不一致性问题。具体来说,ASFF通过动态调整来自不同尺度特征金字塔层的特征贡献,确保每个检测对象的特征表示是一致且最优的。本文所做出的改进是将YOLOv8的检测头更换为ASFF_Detect。🌈

小哥谈 2497

常用的Web插件使用

web常用插件记录

且行且珍惜 1206

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

二、bootstrap table 父子表和行列调序

http://blog.youkuaiyun.com/yin767833376/article/details/52153443 前言:上篇 JS组件系列——表格组件神器:bootstrap table 简单介绍了下Bootstrap Table的基础用法,没想到讨论还挺热烈的。有园友在评论中提到了父子表的用法,今天就结合Bootstrap table的父子表和行列调序的用法再来介绍下它稍微高级

优秀技术文章收录 3682

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Bootstrap Table笔记——2

Spring Boot + Bootstrap 1.父子表 初始化表格的时候有一个属性"detailView",将它设置为true,在每行的前面即可看到一个"+"形状的图标。点击这个图标即触发加载子表格的事件。 (1)初始化表格,注册行展开事件 //初始化Table oTableInit.Init = function () { $('#tb...

weixin_33724046的博客 244

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

bootstrap table组件实现父子表【菜单管理】

实现的效果: 前端代码: <!DOCTYPE HTML> <html lang="zh-cn" xmlns="http://www.w3.org/1999/html"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=devi

ccyy 1864

bootstrap table 实现父子级数据且默认展开第一个

bootstrap table 实现父子级数据且默认展开第一个

qq_48045360的博客 1700

BootstrapTable 父子表案例

Bootstrap Table 父子表案例

qq_41040871的博客 980

bootstrap-table 实现父子表

1、引入相关的css和js <link type="text/css" href="/components/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> <link type="text/css" href="/components/bootstrap-table/1.11.1/dist/bootst...

weixin_30716725的博客 996

bootstrap table父子表

前台代码如下 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> String path = request.getC

菜鸟笔记 1万+

subTable

subTable子表组件的使用说明 一. 组件说明 根据接口(/p/cs/objectTableItem)渲染子表(单纯的展示类子表.eg:日志–没有表内操作) 配置文件路径:/burgeon-project-logic/config/config/subTable.config.js 二. 配置项说明 index.js中添加/修改配置: const con = { orderCenter: { OC_B_RETURN_ORDER110: { // 退货日志 table: 'OC

weixin_43487876的博客 661

基于bootstrap table 列表展示父子级

基于bootstrap table 列表展示父子级页面展示效果展开前展开后页面代码后台controller 页面展示效果 展开前 展开后 页面代码 <!DOCTYPE html> <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <head> <th:block th:include="include :

csdn565973850的博客 3178

Js表格组件神器

​ 由于Bootstrap Table是 Bootstrap 的一个组件,所以它是依赖 Bootstrap 的,我们首先需要添加 Bootstrap 的引用。Bootstrap 的包直接在Bootstrap v3 中文文档里面可以找到。 bootstrap Table有自己的优势: 1、界面采用扁平化的风格,用户体验比较好,更好兼容各种客户端。这点也是最重要的。 2、开源、免费。国人最喜欢的就是免费了。呵呵。 3、相对Jqgrid、easyUI而言,比较轻量级。功能不能说最全面,但基本够用。

S mile0804的博客 851

bootstrapr表格父子框_Bootstrap 表格父子表

【实例简介】【实例截图】【核心代码】$(function () {//1.初始化Tablevar oTable = new TableInit();oTable.Init();//2.初始化Button的点击事件var oButtonInit = new ButtonInit();oButtonInit.Init();});var TableInit = function () {var oTab...

weixin_39948111的博客 319

我的天!做Java九个月涨薪7K,这究竟是怎么做到的

总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!大家参考学习还有更多学习笔记面试资料也分享如下:[外链图片转存中…(img-qqGiEtUj-1712925995904)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

2401_83411843的博客 965
上一篇: shiro权限不生效原因分析
下一篇: java 根据助记词导入ETH钱包账户
bubble21
博客等级 码龄9年 33粉丝 16原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值