bootstrap Table DetailView 的使用

效果展示图如下:

前要说明:

        本次效果实现由python实现,版本为python3。使用的bootstrap框架版本为3.4.1

前端JS实现:

$('#ioppo1').bootstrapTable({

        detailView: true,

        detailFormatter: function (index, row) {
            var alldate = {
                'putype': row[0],
                'shareorderno': row.shareorderno
            };
            console.log(row[0])
            var str = "";
            $.ajax({
                url: "/UnitDataTest/",
                method: 'post',                      //请求方式(*)
                dataType: "json",
                data: alldate,
                success: function (data) {
                    $.each(data, function (index, DesignEchartsDetail) {
                        console.log(DesignEchartsDetail)
                        var num = index + 1;
                        var ondblclick = "dblclick" + num;
                        tree = "tree" + num;
                        str += "<tr id=" + "'" + ondblclick + "'" + " class='detail-view'>";
                        str += "<td style='width: 50px' align='center'></td>";
                        // index 为后端传送的json数据中的键
                        str += "<td style='width: 150px' align='center'>" + index + "</td>";
                        // DesignEchartsDetail 为后端传送的json数据中的值
                        str += "<td style='width: 150px' align='center'>" + DesignEchartsDetail.unitPersonNum + "</td>";
                        str += "<td style='width: 150px' align='center'>" + DesignEchartsDetail.unitKpi + "</td>";

                        str += "</tr>";
                    });
                    //获取到加减号的class .detail-icon,然后获取第index个  拿到他的父亲的父亲(也就是当前行)
                    $(".detail-icon").eq(index).parent().parent().after(str);
                }
            })
            return '';
        },

    })

JS中只对展开的数据进行了处理,无需展开直接放在表格的数据在html的Table中实现,故在Js中我们只需要关注对展开数据的处理即可。

HTML的Table里有个坑,Table中th的个数需要与td的个数完全相同,不然会有异常。

html代码:

<!-- 注意,在该bootstrap版本中,直接在table添加JS代码中的属性无法生效 -->
<!-- <table id="ioppo1" data-detail-view="true" data-detail-formatter="treeDetail">  这些不生效,即没有展开的效果-->
<table id="ioppo1">
    <thead>
    <tr>
        <!-- 这里有个坑,th的个数需要与td的个数完全相同,不然会有异常  -->
        <th style="font-size: 20px">单位名称</th>
        <th style="font-size: 20px">单位人数</th>
        <th style="font-size: 20px">目标值</th>


    </tr>
    </thead>
    <tbody>

    <tr>
        <td>网一</td>
        <td>789</td>
        <td>908</td>
    </tr>
    <tr>
        <td>腾训</td>
        <td>683</td>
        <td>1</td>
    </tr>

    </tbody>
</table>

完整前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="../../static/plugins/bootstrap-3.4.1/css/bootstrap.min.css">
    <link rel="stylesheet" href="../../static/Tree/dist/bootstrap-table/bootstrap-table.min.css">
</head>
<body>


<table id="ioppo1" >
    <thead>
    <tr>
        {#                <th>序号</th>#}
        <th style="font-size: 20px">单位名称</th>
        <th style="font-size: 20px">单位人数</th>
        <th style="font-size: 20px">目标值</th>


    </tr>
    </thead>
    <tbody>

    <tr>
        <td>网一</td>
        <td>789</td>
        <td>908</td>
    </tr>
    <tr>
        <td>腾训</td>
        <td>683</td>
        <td>1</td>
    </tr>

    </tbody>
</table>


<script src="../../static/js/jquery-3.6.0.min.js "></script>
<script src="../../static/Tree/dist/bootstrap-table/bootstrap-table.js "></script>
<script src="../../static/plugins/bootstrap-3.4.1/js/bootstrap.min.js"></script>

<script>

    $('#ioppo1').bootstrapTable({

        detailView: true,

        detailFormatter: function (index, row) {
            var alldate = {
                'putype': row[0],
                'shareorderno': row.shareorderno
            };
            console.log(row[0])
            var str = "";
            $.ajax({
                url: "/UnitDataTest/",
                method: 'post',                      //请求方式(*)
                dataType: "json",
                data: alldate,
                success: function (data) {
                    $.each(data, function (index, DesignEchartsDetail) {
                        console.log(DesignEchartsDetail)
                        var num = index + 1;
                        var ondblclick = "dblclick" + num;
                        tree = "tree" + num;
                        str += "<tr id=" + "'" + ondblclick + "'" + " class='detail-view'>";
                        str += "<td style='width: 50px' align='center'></td>";
                        // index 为后端传送的json数据中的键
                        str += "<td style='width: 150px' align='center'>" + index + "</td>";
                        // DesignEchartsDetail 为后端传送的json数据中的值
                        str += "<td style='width: 150px' align='center'>" + DesignEchartsDetail.unitPersonNum + "</td>";
                        str += "<td style='width: 150px' align='center'>" + DesignEchartsDetail.unitKpi + "</td>";

                        str += "</tr>";
                    });
                    //获取到加减号的class .detail-icon,然后获取第index个  拿到他的父亲的父亲(也就是当前行)
                    $(".detail-icon").eq(index).parent().parent().after(str);
                }
            })
            return '';
        },

    })
</script>

</body>
</html>

后端代码:

from django.http import JsonResponse
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt


@csrf_exempt
def UnitDataTest(request):

    # 注意,数据格式需按如下格式来进行数据传输
    result = {
         
        "网一子单位1": {"unitPersonNum": 300, "unitKpi": 400},
        "网一子单位2": {"unitPersonNum": 300, "unitKpi": 400},
        "网一子单位3": {"unitPersonNum": 189, "unitKpi": 108},
    }



    return JsonResponse(result)

在找前端bootstrap-table.min.css和bootstrap-table.js时,用了很多时间。这也是第一次在CSDN上编写文档,在CSDN中上传资源不是很熟悉。发布文章后发现了JS和CSS在资源里,有需要的话去那里下载即可。

需要注意:对于bootsrap的DetailView中收起折叠信息是一行一行收起折叠数据的,若要一次性收起所有数据可在bootstrap-table.js代码中,通过查询$tr.next().is('tr.detail-view')快速定位到需要修改的位置,按图中修改代码即可。(如果下载我上传的代码的话,那里已经修改过了,核实一遍即可)

参考博客:https://blog.csdn.net/qq_41247642/article/details/88969322

 参考博客:https://blog.csdn.net/dlutsunmingze/article/details/103345027

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Bootstrap Table是一个基于Bootstrap框架的jQuery表格插件,可以快速地将HTML表格转换为功能丰富的交互式表格。它支持搜索、排序、分页、导出等功能,并且可以自定义样式和事件。 使用Bootstrap Table很简单,只需要引入相关的文件和代码即可。以下是一个简单的例子: 1. 引入相关文件 ```html <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.18.3/bootstrap-table.min.css"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.3/js/bootstrap.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.18.3/bootstrap-table.min.js"></script> ``` 2. 编写HTML表格 ```html <table id="myTable" data-toggle="table" data-url="data.json"> <thead> <tr> <th data-field="id">ID</th> <th data-field="name">Name</th> <th data-field="price">Price</th> </tr> </thead> </table> ``` 3. 编写JavaScript代码 ```javascript $(function() { $('#myTable').bootstrapTable(); }); ``` 在上面的代码中,我们通过将`data-toggle`设置为`table`来启用Bootstrap Table插件,将数据源设置为`data.json`,并定义了表格的列。 最后,我们在JavaScript中调用`bootstrapTable()`方法来初始化表格。现在我们就可以使用Bootstrap Table插件了,可以通过鼠标点击、拖动等方式对表格进行交互操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值