close

Bootstrap是一個利用Convention就幫忙做掉很多事情的一個CSS Framework,讓程式設計師可以很簡單的就可以做出一個很漂亮的UI。

雖然稱為CSS Framework,但其實後端是利用jQuery當作Base幫你處理掉很多事情,也有開放一些介面讓你可以Customize一些功能,可以定義為簡單好看又好用的Framework。

由於Bootstrap的基礎功能不多,因此外界開發了許多建立在Boostrap上的plugin,就像是jQuery有許多plugin依樣,而Bootstrap Table就是其中的一個。

Bootstrap Table

 一、資源安裝

為了要執行Bootstrap Table你必須要先Includer幾個library
1. jquery.js  
    http://jquery.com/

2. bootstrap.js , bootstrap.css
    http://getbootstrap.com/ 下載之後解壓縮會找到這兩個檔案

3. 安裝glyphicons
    在bootstrap.zip裡面有一個font的folder,glyphicon所有的圖為了要能縮放,都做成了字型!所以要安裝字型必須要去改bootstrap.css的url的位置
      - 將font整個folder放進去你的server的folder中
      - 打開bootstrap.css搜尋glyphicon,更改內部的url的位置

4. boostrap-table.js, bootstrap-table.css 
    http://bootstrap-table.wenzhixin.net.cn/

二、Bootstrap Table

你的程式有參考上列的資源後,基本上不需要寫任何的JS跟CSS就可以讓你的Table變得很漂亮了,我不會詳細介紹每個細節,因為Bootstrap Table已經有很清楚的範例,我在這只會介紹幾個重要的key point以及document沒有提到的

Example : http://bootstrap-table.wenzhixin.net.cn/examples/ ,  http://wenzhixin.net.cn/p/bootstrap-table/docs/examples.html
Document : http://bootstrap-table.wenzhixin.net.cn/documentation/

怎麼看Doc : 打開上面的Document網頁,Name是在用javascript的時候用的,而Attribute則是當你要加在HTML tag的屬性時使用

1. Basic Table

只要在你的<table>裡面加上屬性  data-toggle="table",恭喜你,你的table已經變成Bootstrap的好看介面了,更棒的是很多好用的功能,也只需要另外加在<table>即可

    * data-classes : 放class的地方,預設是"table table-hover" 是bootstrap table的格式, 且hover會有效果,如果加上"table-condensed" 則會出現比較小的行距
    * data-striped: 要不要在Row之間畫線

2. Load Data的方式

提供三種可以將資料匯入的方式

- From HTML : HTML內本來就有<table>的所有資料,只要加上屬性data-toggle="table"就可以了
- From data : 如果你的資料是在javascript內,那麼你必須要做
     * <th>要加上一個屬性 data-field="fieldNameA"
     * 在JS中你的物件的key必須match這個name,並用陣列包起來
     * 在JS中執行 $('#myTable').bootstrapTable({data : mydata});
- From URL : 在<table>的屬性加上 data-url = "jsonURL...",注意格式必須是json,bootstrapTable幫你把呼叫的程式都做完了

3. 調整Column寬度 

- 範例裡面並沒有講解清楚,而且根據目前版本的實作,Column的width並沒辦法真的限制住Column的寬度,當呈現的資料有換頁時,寬度還是會動態的改變
  要限定Column的寬度照範例的話,是在<th>內加上一個class "col-xs-1","col-xs-2",....."col-xs-n" 他會照比例來限制資料寬度

4. RowStyle , CellStyle

Bootstrap Table提供一個讓你可以動態的customize style的方式,分成在<table>中的屬性 data-row-style 以及在<th>層中的屬性 data-cell-style,用rowstyle舉例
- 在<table>中加屬性 data-row-style="myRowStyle"
- 在JS中加一個function叫做 myRowStyle(item, i){} 並且回傳一個物件{classes : "xxx" , css : "disable:true"}
     注意這邊只有兩個key是合法的 classes & css
     給你item跟index讓你自由的判斷要回傳那些,回傳空的{}也行

- Bootstrap會自動幫你把clsss跟css加到<tr>上面去

data-cell-style則是加到<td>上面去

5. Sorting

Bootstrap Table有內建排序功能,將資料丟進去之後她會自動幫忙排序,即使分頁也能夠排的很好,Server排序的功能還沒Release。
Sorting 分成
放在<table>的

  data-sort-name="name"  : 預設的排序column name
  data-sort-order="desc" : 預設的order
  data-sortable = 整個Table能不能做sorting, 預設是true

放在<th>中的
  data-sortable="true" : 這個column能不能sort,預設是false
  data-order = "asc" : 排序方式
  data-sorter = "mySorterA" : 會呼叫mySorterA這個JS的function(a,b){} ,回傳1是a>b ; -1是b>a

 6. formatter 

除了用data-cell-style指定動態的class, css之外,也有另一種可以操作整個Column的顯示方式,回傳的是整個html。
舉例來說,如果Server來的資料只是url,可以幫它包裝成<img>

在<th>中
data-formatter="myFormatterA" ,會去呼叫function myFormatterA(value, row, index),回傳值為html string
把value, index跟整個row都給你參考了,應該會很好實作

 

 7. Column Select

Bootstrap Table提供讓使用者可以自己勾選想要顯示的欄位

<table>下

data-show-columns="true" : Show出可以選欄位的功能
data-minimum-count-columns="[1|n]" : 限制最少需要顯示多少欄位,當欄位數小於這個數字,則不能再取消顯示任何欄位(會被disable掉)

<th>下

data-visible="false" : 預設值是true。如果選擇是false,則一開始不顯示,但是可以從選單內再勾選顯示回來
data-switchable="false" : 預設值是true。這個column是不是可以被選擇顯示/不顯示的選項之一,如果是false,則不會出現在Column Select的選單內 

8. Toolbar

Table上方可以放一些功能按鍵,分成預設按鈕與客製化。

預設按鈕 :

data-search="true" : show搜尋列
data-show-refresh="true" : show refresh按鈕
data-show-columns="true" : show選擇顯示column的功能鈕

客製化Toolbar

其實就是bootstrap本身支援的功能,看你是要用class="btn-group"還是要calss="form-group",參考http://getbootstrap.com/components/

步驟如下 : 
- 在<table>放上你的客製化toolbar div並放上id="abcTool"
- 在<table>內的屬性指定 data-toolbar="#abcTool"

9. Search

在<table>加上屬性 data-search="true" 就可以搜尋所有的column。
如果想要限制只能搜尋某些column,就在<th>的屬性加上data-searchable="false" (預設是true)

10. Paging

只需要加一個屬性就可以把分頁做好了

data-pagination="{true|false}" : 是否要有分頁功能
data-page-number = 1 : 一開始在第幾頁
data-page-size = 10 : 預設一頁幾筆資料
data-page-list = "[10, 25, 50, 100]" : 一頁幾筆資料的選項

data-side-pagination="{client|server}" : 如果值是server,則每次換頁都會去跟Server要資料,給的參數為 limit, offset, search, sort, order

而回傳值則是這樣{
    total : 1000 ,
    rows : [{id:"1", name : "Hank"}, {id:"2", name="someone"}]

 

arrow
arrow
    全站熱搜

    minglight 發表在 痞客邦 留言(0) 人氣()