Bootstrap Table實用配置

記錄關(guān)于Bootstrap Table的一些實用配置睬隶。

html

引入相關(guān)文件
<!-- jquery -->
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>

    <!-- bootstrap -->
    <link  rel="stylesheet">
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

    <!-- bootstrap-table -->
    <link  rel="stylesheet">
    <script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/locale/bootstrap-table-zh-CN.min.js"></script>
頁面內(nèi)容
    <!-- 查詢工具欄 -->
    <div class="form-inline">
        <div class="form-group">
            <label for="queryNameText">姓名:</label>
            <input id="queryNameText" class="form-control input-sm">
        </div>
        <div class="form-group">
            <label for="queryAgeText">年齡:</label>
            <input id="queryAgeText" class="form-control input-sm">
        </div>
        <button class="btn btn-primary btn-sm" id="queryBtn">查詢</button>
        <button class="btn btn-primary btn-sm" id="resetBtn">重置</button>
        <button class="btn btn-primary btn-sm" id="addBtn">新增</button>
    </div>

    <hr>

    <table id="testTable"></table>

使用js方式加載table

官方文檔上提供了詳盡的配置參數(shù),以下記錄幾個比較常用的

url

后端數(shù)據(jù)交互url商佑,要求返回json數(shù)據(jù)蒿涎,且包含rows(查詢內(nèi)容)和total(數(shù)據(jù)總數(shù))

queryParams

數(shù)據(jù)加載參數(shù),必須要有offset和limit參數(shù)劫恒,支持通過json格式自定義查詢參數(shù)
例哨坪,自定義name和age作為查詢參數(shù):

queryParams: function (params) {
    return {
        offset: params.offset,
        limit: params.limit,
        name: $('#queryNameText').val(),
        age: $('#queryAgeText').val()
    }
}
striped

當值為true顯示行間隔條紋效果

pagination

當值為true顯示分頁條

sidePagination

可選值為'server'庸疾、'client',分別表示服務(wù)端分頁和客戶端分頁

pageSize

每頁數(shù)量当编,默認值10

pageList

值為一個數(shù)組届慈,提供每頁可選數(shù)量的選擇

rowStyle

對行樣式的設(shè)置,對應(yīng)函數(shù)的兩個參數(shù)為row, index
例:

rowStyle: function (row, index) {
    var strClass = '';
    if (row.age < 18) {
        strClass = 'text-danger';
    }
    return {classes: strClass}
}
columns

表格列配置項忿偷,常用的有

列配置項 描述
field json數(shù)據(jù)的列
title 列標題
titleTooltip 列標題提示
class 該列樣式(class)
align 對齊方式(left金顿、right、center)

例:

columns: [{
    field: 'id',
    title: '編號',
    titleTooltip: '編號提示',
    class: 'text-danger',
    align: 'center',
}]

還有一個非常有用的列配置項:formatter鲤桥,可以在表格中寫html揍拆,使表格內(nèi)容不限于文本內(nèi)容,對應(yīng)函數(shù)的三個參數(shù)為value, row, index
例:

columns: [{
    formatter: function (value, row, index) {
        return [
          '<a href="javascript:modifyPer(' + row.id + ",'" + row.name + "'," + row.age + ",'" + row.address + "'" + ')">' +
              '<i class="glyphicon glyphicon-pencil"></i>修改' +
          '</a>',
          '<a href="javascript:delPer(' + row.id + ')">' +
              '<i class="glyphicon glyphicon-remove"></i>刪除' +
          '</a>'
        ].join('');
    },
    title: '操作'
}]

效果如圖:


本例中使用的配置
var $testTable = $('#testTable');
$testTable.bootstrapTable({
    url: '/getPers',
    queryParams: function (params) {
        return {
            offset: params.offset,
            limit: params.limit,
            name: $('#queryNameText').val(),
            age: $('#queryAgeText').val()
        }
    },
    columns: [{
        field: 'id',
        title: '編號'
    }, {
        field: 'name',
        title: '姓名'
    }, {
        field: 'age',
        title: '年齡'
    }, {
        field: 'address',
        title: '地址'
    }, {
        formatter: function (value, row, index) {
            return [
                '<a href="javascript:modifyPer(' + row.id + ",'" + row.name + "'," + row.age + ",'" + row.address + "'" + ')">' +
                    '<i class="glyphicon glyphicon-pencil"></i>修改' +
                '</a>',
                '<a href="javascript:delPer(' + row.id + ')">' +
                    '<i class="glyphicon glyphicon-remove"></i>刪除' +
                '</a>'
            ].join('');
        },
        title: '操作'
    }],
    striped: true,
    pagination: true,
    sidePagination: 'server',
    pageSize: 10,
    pageList: [5, 10, 25, 50, 100],
    rowStyle: function (row, index) {
        var ageClass = '';
        if (row.age < 18) {
            ageClass = 'text-danger';
        }
        return {classes: ageClass}
    },
});

與分頁插件pagehelper結(jié)合使用

服務(wù)端分頁要求返回的json數(shù)據(jù)必須包含rows(查詢內(nèi)容)和total(數(shù)據(jù)總數(shù))兩項內(nèi)容茶凳,點擊頁碼按鈕會向后端傳遞offset和limit參數(shù)嫂拴,使用PageHelper.offsetPage(offset, limit);方法可以簡單快速地進行分頁播揪。

分頁內(nèi)容工具類
/**
 * 用于返回分頁結(jié)果
 */
public class PaginationResult {

    private long total;

    private List<?> rows;

    public PaginationResult(long total, List<?> rows) {
        this.total = total;
        this.rows = rows;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public List<?> getRows() {
        return rows;
    }

    public void setRows(List<?> rows) {
        this.rows = rows;
    }

    @Override
    public String toString() {
        return "PaginationResult{" +
                "total=" + total +
                ", rows=" + rows +
                '}';
    }
}
返回數(shù)據(jù)

僅在web層接收offset和limit參數(shù)就可以完美分頁,使得對項目的侵入性非常小

    @RequestMapping("/getPers")
    public @ResponseBody
    PaginationResult getPers(int offset, int limit, String name, String age) {
        Page<Object> page = PageHelper.offsetPage(offset, limit);
        List<Per> pers = perService.getPers(name, age);
        return new PaginationResult(page.getTotal(), pers);
    }
效果樣例

http://106.14.200.121/bstabletest/

效果樣例

注意事項

對表格數(shù)據(jù)進行增刪查改后想立即看到效果通常會使用

    $('#table').bootstrapTable('refresh');

進行刷新操作筒狠,以下列舉了測試中出現(xiàn)的兩種問題(都是由服務(wù)端分頁的offset參數(shù)引起的問題)猪狈,并提出解決方案(建議每次增刪查改后都采用這兩種方案)。

條件查詢

服務(wù)端分頁時bootstrap table根據(jù)分頁條所在的位置傳遞offset參數(shù)辩恼,若從第二頁開始查詢雇庙,而所查詢數(shù)據(jù)的總數(shù)量少于每頁顯示數(shù)量,就會出現(xiàn)顯示查詢數(shù)量為0的結(jié)果灶伊。

刪除操作

在第一頁后的頁面疆前,若只有一行數(shù)據(jù),點擊刪除聘萨,刷新后分頁條消失竹椒,顯示沒有數(shù)據(jù)。

解決方案
1.每次查詢操作后先銷毀bootstrap table匈挖,再用js啟動
function initTable() {
    $('#table').bootstrapTable('destroy');
    $('#table').bootstrapTable({
        url : ...
        ...
    });
}
2.在每次提交操作后返回首頁
    $('#table').bootstrapTable('selectPage', 1);

完整項目下載

一個結(jié)合Spring Boot進行單頁面增刪查改的小例子:Bootstrap-Table-test
有Spring基礎(chǔ)的可以快速入門:Soring Boot學(xué)習(xí)筆記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市康愤,隨后出現(xiàn)的幾起案子儡循,更是在濱河造成了極大的恐慌,老刑警劉巖征冷,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件择膝,死亡現(xiàn)場離奇詭異,居然都是意外死亡检激,警方通過查閱死者的電腦和手機肴捉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叔收,“玉大人齿穗,你說我怎么就攤上這事〗嚷桑” “怎么了窃页?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長复濒。 經(jīng)常有香客問我脖卖,道長,這世上最難降的妖魔是什么巧颈? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任畦木,我火速辦了婚禮,結(jié)果婚禮上砸泛,老公的妹妹穿的比我還像新娘十籍。我一直安慰自己蛆封,他們只是感情好,可當我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布妓雾。 她就那樣靜靜地躺著娶吞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪械姻。 梳的紋絲不亂的頭發(fā)上妒蛇,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天,我揣著相機與錄音楷拳,去河邊找鬼绣夺。 笑死,一個胖子當著我的面吹牛欢揖,可吹牛的內(nèi)容都是我干的陶耍。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼她混,長吁一口氣:“原來是場噩夢啊……” “哼烈钞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起坤按,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤毯欣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后臭脓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酗钞,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年来累,在試婚紗的時候發(fā)現(xiàn)自己被綠了砚作。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡嘹锁,死狀恐怖葫录,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情领猾,我是刑警寧澤压昼,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站瘤运,受9級特大地震影響窍霞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拯坟,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一但金、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧郁季,春花似錦冷溃、人聲如沸钱磅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盖淡。三九已至,卻和暖如春凿歼,著一層夾襖步出監(jiān)牢的瞬間褪迟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工答憔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留味赃,地道東北人。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓虐拓,卻偏偏與公主長得像心俗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蓉驹,可洞房花燭夜當晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容