BootStrap Table 合並單元格


    GitHub下載地址

    為了更直觀展示表格的一大堆亂七八糟的數據,合並單元格就派上用場。。。

效果圖:

貼上JSON數據(后台查詢數據一定要對合並字段排序):

    [  
        {    
            "city": "廣州市",  
            "area": "天河區",
            "gdp":"100"  
        },  
        {    
            "city": "廣州市",  
            "area": "海珠區",
            "gdp":"101"  
        },  
        {    
            "city": "廣州市",  
            "area": "番禺區",
            "gdp":"102"  
        }, 
        {    
            "city": "廣州市",  
            "area": "增城區",
            "gdp":"103"  
        }, 
        {    
            "city": "深圳市",  
            "area": "羅湖區",
            "gdp":"200"  
        }, 
        {    
            "city": "深圳市",  
            "area": "福田區",
            "gdp":"201"  
        },  
        {    
            "city": "深圳市",  
            "area": "南山區",
            "gdp":"202"  
        },  
        {    
            "city": "深圳市",  
            "area": "寶安區",
            "gdp":"203"  
        }, 
        {    
            "city": "深圳市",  
            "area": "龍崗區",
            "gdp":"204"  
        }, 
        {    
            "city": "深圳市",  
            "area": "鹽田區",
            "gdp":"205"  
        }, 
        {    
            "city": "廣州市",  
            "area": "白雲區",
            "gdp":"206"
        },
        {
          "city": "上海市",
          "area": "黃浦區",
          "gdp":"301"
        },
        {
          "city": "上海市",
          "area": "徐匯區",
          "gdp":"302"
        }
    ]  
View Code

HTML代碼:

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<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 th:href="@{/static/css/bootstrap/bootstrap.min.css}" rel="stylesheet" type="text/css">
    <link th:href="@{/static/css/bootstrap/bootstrap-table.min.css}"  rel="stylesheet" type="text/css">

    <!-- 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 th:src="@{/static/js/ajax/jquery.min.js}"></script>
<!-- 加載 Bootstrap 的所有 JavaScript 插件。你也可以根據需要只加載單個插件。 -->
<script th:src="@{/static/js/bootstrap/bootstrap.min.js}"></script>
<!-- 加載 Bootstrap-Table 插件 -->
<script th:src="@{/static/js/bootstrap/bootstrap-table.min.js}"></script>
<!-- 漢化插件 -->
<script th:src="@{/static/js/bootstrap/bootstrap-table-zh-CN.min.js}"></script>
<script type="application/javascript">
    $('#bootstrap-table').bootstrapTable({
        url: './../static/json/data.json',
        /*sidePagination: "true",*/
        pageSize: "10",             //每頁顯示10條
        search:true,                //顯示搜索
        searchOnEnterKey:true,      //Enter觸發搜索
        pagination: true,           // 是否分頁
        /*singleSelect:true,          //單選
        checkboxHeader:false,       //隱藏checkbox全選*/
        columns: [
            {
                field: 'checkStatus',
                checkbox:true
            },
            {
                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;
            $(target).bootstrapTable('mergeCells',{index:index, field:fieldName, colspan: colspan, rowspan: count});
            index += count;
        }
    }
</script>
</body>
</html>
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM