1. 程式人生 > >bootstrap-table 學習心得

bootstrap-table 學習心得

一、bootstrap-table使用基礎-----必要的引入

<!--樣式檔案-->
<link href="assets/bootstrap-3.3.7-dist/css/bootstrap.css" rel="stylesheet">
<link href="assets/bootstrap-table-develop/src/bootstrap-table.css" rel="stylesheet">
<!--js檔案-->
<script src="js/jquery-2.2.4.js"></script>
<script src="assets/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
<script src="assets/bootstrap-table-develop/src/bootstrap-table.js"></script>
<script src="assets/bootstrap-table-develop/src/bootstrap-table-zh-CN.js"></script>
<!-- 自己封裝的包含分頁和資料請求的初始化 -->
<script src="assets/bootstrap-table-develop/src/bootstrap-table-common.js"></script><script src="assets/bootstrap-table-develop/src/bootstrap-table-common.js"></script>
/**
 * @author     :
 * version     : 
 * description :Encapsulation of common table content
 * 引數說明:id :bootstrap-table id   
 * url         :資料請求url   
 * queryParams : 
 * pagination  : 是否顯示分頁
 * strictSearch: 是否顯示搜尋
 */
// 初始化表格
function initTable(id, url, queryParams, pagination, strictSearch) {
    //先銷燬表格 
    $('#' + id).bootstrapTable('destroy');
    //初始化表格,動態從伺服器載入資料
    $("#" + id).bootstrapTable({
        method              : "get",      // 使用get請求到伺服器獲取資料 
        url                 : url,        // 獲取資料的Servlet地址
        toolbar             : '#toolbar', // 工具按鈕用哪個容器
        cache               : false,      // 是否使用快取,預設為true,所以一般情況下需要設定一下這個屬性(*)
        striped             : true,       // 表格顯示條紋 
        pagination          : pagination, // 啟動分頁
        pageSize            : 15,         // 每頁顯示的記錄數 
        pageNumber          : 1,          // 當前第幾頁
        search              : true,       // 是否啟用查詢
        strictSearch        : strictSearch,       // 查詢
        showRefresh         : true,       // 顯示重新整理按鈕
        showToggle          : false,      // 是否顯示詳細檢視和列表檢視的切換按鈕
        showColumns         : true,       // 顯示下拉框勾選要顯示的列 
        minimumCountColumns : 2,          // 最少允許的列數
        clickToSelect       : true,       // 是否啟用點選選中行
        uniqueId            : "ID",       // 每一行的唯一標識,一般為主鍵列
        cardView            : false,      // 是否顯示詳細檢視
        detailView          : false,      // 是否顯示父子表
        sidePagination      : "server",   // 表示服務端請求
        queryParams         : queryParams
    });
}
// 刪除表格整行
function onRemove(rowId){
    $('table').bootstrapTable('remove',{
        fild: 'rowId',
        values: rowId
    })
}

二、表格渲染方式:

方式一:

<table class="table table-hover table-responsive table-bordered" id="cusTable"> 
    <thead>
        <tr>
            <th data-field="checkbox" data-checkbox="true"></th>
            <th data-field="projectName">專案名稱</th>
            <th data-field="projectType" data-sortable="true">專案型別</th>
            <th data-field="PersonInCharge" data-sortable="true" data-width='200'>負責人</th>
            <th data-field="participants" data-sortable="true" data-width='160'>參與人數</th>
            <th data-field="stopTime" data-sortable="true" data-width='160'>專案結束時間</th>
            <th data-field="option" data-width='60' data-formatter="actionFormatter">操作</th> 
        </tr>
     </thead>
     <tbody></tbody>
</table>

    <script type="text/javascript">
        $(document).ready(function () {
              initTable('cusTable', 'data/data.json', queryParams, true,true); 
            //data/data.json 的格式:rows:[],total:,為分頁狀態
       });
      var queryParams = function(params){
            var param      = { 
                pageNumber : params.offset,
                pageSize   : params.limit,
                sortName   : params.sort
            };
            if (params.sort) {
                param.sortOrder = params.order;
            }
            return param;
        }
       
        // 定義操作按鈕
        function actionFormatter(value, row, index) {
            if (row.projectName=="考試系統") {
                return [
                    '<a data-id="' + row.projectName + '" class="edit-action" href="javascript:void(0);" style="cursor:pointer;" title="編輯"><span class="glyphicon glyphicon-edit" aria-hidden="true"></span></a>&nbsp;&nbsp;',
                    '<a data-id="' + row.projectName + '" class="trash-action" href="javascript:void(0);" onclick="onRemove('+row.projectName+')"  title="刪除"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>'
                ].join('');
            }else{
                return [
                    '<a data-id="' + row.projectName + '" class="trash-action" href="javascript:void(0);" style="cursor:pointer;" title="刪除"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>'
                ].join('');
            }
            
        }
    </script>              

方式二:   

        <table class="table table-hover table-responsive table-bordered" id="table" data-url="data/data.json"> 
            <thead>
                <tr>
                    <th data-field="checkbox" data-checkbox="true"></th>
                    <th data-field="projectName">專案名稱</th>
                    <th data-field="projectType" data-sortable="true">專案型別</th>
                    <th data-field="PersonInCharge" data-sortable="true" data-width='200'>負責人</th>
                    <th data-field="participants" data-sortable="true" data-width='160'>參與人數</th>
                    <th data-field="stopTime" data-sortable="true" data-width='160'>專案結束時間</th>
                    <th data-field="option" data-width='60' data-formatter="actionFormatter">操作</th> 
                </tr>
            </thead>
            <tbody></tbody>
        </table>

    <script type="text/javascript">
        $(document).ready(function () {
            $("#table").bootstrapTable({
                //如不設定分頁那麼資料來源不需要totals和rows,只需要data就可以
                pagination: true,
                sidePagination: 'server' // 設定為伺服器端分頁
            });
        });
       
    </script>


資料來源格式:

{
    "total": 20,
    "rows": [
        {
            "projectName": "考試系統", 
            "projectType": "研發類", 
            "PersonInCharge": "項..,劉..",
            "participants": "8",
            "stopTime":"2018-05-01 00:00:00",
            "option":""
        }, 
        {
            "projectName": "ERP", 
            "projectType": "研發類", 
            "PersonInCharge": "邵..,石..,張..,劉..",
            "participants": "8",
            "stopTime": "2017-09-30 00:00:00",
            "option": ""
        }, 
        {
            "projectName": "INS 2.0", 
            "projectType": "研發類", 
            "PersonInCharge": "項..,劉.",
            "participants": "8",
            "stopTime": "2017-12-31 00:00:00",
            "option":""
        }, 
       {
            "projectName": "考試系統", 
            "projectType": "研發類", 
            "PersonInCharge": "項..,劉..",
            "participants": "8",
            "stopTime": "2018-05-01 00:00:00",
            "option":"刪除"
        }
    ]
}