Tim Chen 已發佈 2019-11-9

Bootstrap Table 響應式表格

前言

什麼是 Bootstrap Table?

https://bootstrap-table.com/

Bootstrap Table 是建構在 Bootstrap 之上,主要是針對 Table 作用的框架。

所以如果要使用 Bootstrap Table 需要連 Bootstrap 框架也一起引入,畢竟是在 Bootstrap 的基礎上建構的框架,好啦廢話少說,我們直接進實作!


效果展示🔗


實作

首先我們要做的是將一些會用到的 CSS、JS 文件引入到專案裡,接著撰寫一個 Table 元素,最重要的就是在 table 裡新增一個 data-toggle 屬性,屬性值為 table 如此一來就可以吃到 Bootstrap Table 的設定,一個基本的表格就出現了,你可以試著比對有無 data-toggle="table" 在畫面上有什麼差異,如果有甚麼問題也可以參考下面的程式碼。

HTML

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Hello, Bootstrap Table!</title>

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" crossorigin="anonymous">
    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-table.min.css">
  </head>
  <body>
    <table data-toggle="table">
      <thead>
        <tr>
          <th>Item ID</th>
          <th>Title</th>
          <th>Content</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>1</td>
          <td>Lorem, ipsum dolor.</td>
          <td>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ab, nemo.</td>
        </tr>
        <tr>
          <td>2</td>
          <td>Lorem ipsum dolor sit.</td>
          <td>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>
        </tr>
      </tbody>
    </table>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
    <script src="https://unpkg.com/[email protected]/dist/bootstrap-table.min.js"></script>
  </body>
</html>

Data-url

我們不可能每次的資料都是固定寫在 HTML 上的,這時候就可以使用 data-url 屬性來載入 JSON 文件。

範例文件

https://examples.bootstrap-table.com/json/data1.json

HTML

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Hello, Bootstrap Table!</title>

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" crossorigin="anonymous">
    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-table.min.css">
  </head>
  <body>
    <table data-toggle="table" data-url="https://cors-anywhere.herokuapp.com/https://examples.bootstrap-table.com/json/data1.json">
      <thead>
        <tr>
          <th data-field="id">ID</th>
          <th data-field="name">Item Name</th>
          <th data-field="price">Item Price</th>
        </tr>
      </thead>
    </table>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
    <script src="https://unpkg.com/[email protected]/dist/bootstrap-table.min.js"></script>
  </body>
</html>

這邊需要注意的有兩個地方,首先是 th 裡需要加上 data-field 屬性,屬性值為對應的 JSON key,第二個需要注意的點是我提供的 JSON 範例與你在不同的網域,所以你的請求會被擋掉,我們這邊為求教學方便便直接使用代理請求,不再自行設定,使用方法為在網址前面加上 https://cors-anywhere.herokuapp.com/ ,由於這僅是為了測試方便,還請不要在正式網站上使用。

https://github.com/Rob--W/cors-anywhere/

其他屬性

Bootstrap Table 還有其他好用的屬性,只要短短一行,可以省下你寫幾十行,以下我們一一來介紹。

HTML

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Hello, Bootstrap Table!</title>

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" crossorigin="anonymous">
    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-table.min.css">
  </head>
  <body>
    <table
           data-toggle="table"
           data-sortable="true"
           data-sort-class="table-active"
           data-pagination="true"
           data-search="true"
           data-show-search-clear-button="true"
           data-show-refresh="true"
           data-show-toggle="true"
           data-show-columns="true"
           data-show-columns-toggle-all="true"         
           data-url="https://cors-anywhere.herokuapp.com/https://examples.bootstrap-table.com/json/data1.json">
      <thead>
        <tr>
          <th data-field="id" data-sortable="true">ID</th>
          <th data-field="name" data-sortable="true">Item Name</th>
          <th data-field="price" data-sortable="true">Item Price</th>
        </tr>
      </thead>
    </table>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
    <script src="https://unpkg.com/[email protected]/dist/bootstrap-table.min.js"></script>
  </body>
</html>

data-sortable

設為 true 之後就可以針對欄位進行排序,但要注意的是,想要排序的欄位必須在 th 加上 data-sortable="true",如此一來在表頭的地方就有按鈕可以讓你排序囉。

data-sort-class

這行的作用與 data-sortable 息息相關,旨在於將排序的那欄以灰底來凸顯,方便使用者檢視。

data-pagination

簡單明瞭,就是分頁,還可以調整一頁顯示幾筆喔!

data-search

多一行搜尋列,可以讓使用者搜尋相關資訊。

data-show-search-clear-button

清除按鈕,方便快速清除搜尋條件。

data-show-refresh

假如資料有異動,可以點擊按鈕來重新讀取資料。

data-show-toggle

切換檢視模式,從預設的條列式改為區塊顯示模式。

data-show-columns

調整要顯示甚麼欄位,預設最少需要顯示一欄。

data-show-columns-toggle-all

搭配 data-show-columns 使用,可以一次顯示全部跟取消顯示全部。


後記

Bootstrap Table 還有很多很好用的功能都是這次沒有介紹到的,如果各位有興趣可以再自行探索挖掘其他更好用的功能,那我們這次的分享就到這邊,我們下次再見。

謝謝各位看到這邊,也請各位看倌多多指教與交流。

If I have seen further than others, it is by standing upon the shoulders of giants.

images

關於筆者

暱稱:Tim Chen

介紹:Medium:https://medium.com/@timchen0607

文章列表 文章列表