bootstrap table輕松實現(xiàn)數(shù)據(jù)表格

在使用bootstrap table時可能在很多時候回用的表格來顯示數(shù)據(jù),如果自己寫那肯定沒問題浓若,但是數(shù)據(jù)展示出來就麻煩多了,然而bootstrap table 封裝了一套完善的數(shù)據(jù)表格組件观挎,把從后臺請求的數(shù)據(jù)很容易就展示出來了挪凑,bootstrap table有兩種實現(xiàn)方式,一種是通過table寫定在html里面夯巷,另一種是通過js實現(xiàn)赛惩,js實現(xiàn)比較靈活,所以這里采用js方式趁餐,下面來看實現(xiàn)喷兼。

效果頁

客戶端
必須先引入相應(yīng)的css、js等文件

  <!DOCTYPE html>
  <html>
  <head>
<meta charset="UTF-8">
<title>Bootstrap-Table</title>
<link rel="stylesheet" />
<link rel="stylesheet" href="assets/bootstrap-table.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
</head>
<body>
<div>
    <div>
        <div class="col-*-12">

            <div id="toolbar">
                <div class="btn btn-primary" data-toggle="modal" data-target="#addModal">添加記錄</div>
            </div>

            <table id="mytab" class="table table-hover"></table>

            <div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-hidden="true">
               <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                                &times;
                            </button>
                            <h4 class="modal-title" id="myModalLabel">添加記錄</h4>
                        </div>
                        <div class="modal-body">
                            <form role="form" action="javascript:void(0)">
                                <div class="form-group">
                                    <input type="text" class="form-control" id="name" placeholder="請輸入名稱">
                                </div>
                                <div class="form-group">
                                    <input type="text" class="form-control" id="age" placeholder="請輸入年齡">
                                </div>
                            </form>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                            <button type="button" class="btn btn-primary" id="addRecord">提交</button>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="assets/bootstrap-table.js"></script>
<script src="assets/bootstrap-table-zh-CN.js"></script>
<script type="text/javascript">
    $(function() {
        //根據(jù)窗口調(diào)整表格高度
        $(window).resize(function() {
            $('#mytab').bootstrapTable('resetView', {
                height: tableHeight()
            })
        })

        $('#mytab').bootstrapTable({
            url: "",//數(shù)據(jù)源
            dataField: "rows",//服務(wù)端返回數(shù)據(jù)鍵值 就是說記錄放的鍵值是rows后雷,分頁時使用總記錄數(shù)的鍵值為total
            height: tableHeight(),//高度調(diào)整
            search: true,//是否搜索
            pagination: true,//是否分頁
            pageSize: 20,//單頁記錄數(shù)
            pageList: [5, 10, 20, 50],//分頁步進值
            sidePagination: "server",//服務(wù)端分頁
            contentType: "application/x-www-form-urlencoded",//請求數(shù)據(jù)內(nèi)容格式 默認是 application/json 自己根據(jù)格式自行服務(wù)端處理
            dataType: "json",//期待返回數(shù)據(jù)類型
            method: "post",//請求方式
            searchAlign: "left",//查詢框?qū)R方式
            queryParamsType: "limit",//查詢參數(shù)組織方式
            queryParams: function getParams(params) {
                //params obj
                params.other = "otherInfo";
                return params;
            },
            searchOnEnterKey: false,//回車搜索
            showRefresh: true,//刷新按鈕
            showColumns: true,//列選擇按鈕
            buttonsAlign: "left",//按鈕對齊方式
            toolbar: "#toolbar",//指定工具欄
            toolbarAlign: "right",//工具欄對齊方式
            columns: [
                {
                    title: "全選",
                    field: "select",
                    checkbox: true,
                    width: 20,//寬度
                    align: "center",//水平
                    valign: "middle"http://垂直
                },
                {
                    title: "ID",//標(biāo)題
                    field: "id",//鍵名
                    sortable: true,//是否可排序
                    order: "desc"http://默認排序方式
                },
                {
                    field: "name",
                    title: "NAME",
                    sortable: true,
                    titleTooltip: "this is name"
                },
                {
                    field: "age",
                    title: "AGE",
                    sortable: true,
                },
                {
                    field: "info",
                    title: "INFO[using-formatter]",
                    formatter: 'infoFormatter',//對本列數(shù)據(jù)做格式化
                }
            ],
            onClickRow: function(row, $element) {
                //$element是當(dāng)前tr的jquery對象
                $element.css("background-color", "green");
            },//單擊row事件
            locale: "zh-CN", //中文支持
            detailView: false, //是否顯示詳情折疊
            detailFormatter: function(index, row, element) {
                var html = '';
                $.each(row, function(key, val){
                    html += "<p>" + key + ":" + val +  "</p>"
                });
                return html;
            }
        });

        $("#addRecord").click(function(){
            alert("name:" + $("#name").val() + " age:" +$("#age").val());
        });
    })

    function tableHeight() {
        return $(window).height() - 50;
    }
    /**
     * 列的格式化函數(shù) 在數(shù)據(jù)從服務(wù)端返回裝載前進行處理
     * @param  {[type]} value [description]
     * @param  {[type]} row   [description]
     * @param  {[type]} index [description]
     * @return {[type]}       [description]
     */
    function infoFormatter(value, row, index)
    {
        return "id:" + row.id + " name:" + row.name + " age:" + row.age;
    }
</script>
</body>
</html>

服務(wù)端:只需在接到請求時返回json數(shù)組就行了季惯,是json數(shù)組哦,不是單個對象臀突,不然就數(shù)據(jù)展示不出來勉抓。
注意bootstrap table 可以前端分頁也可以后端分頁,這里我們使用的是后端分頁候学,后端分頁時需返回含有
total:總記錄數(shù) 這個鍵值好像是固定的琳状,我看文檔沒找到可以修改成別的
rows: 記錄集合 鍵值可以修改 dataField 自己定義成自己想要的就好
{
"total":200,
"rows":[
{"id":1, "name":"sallency", "age": 26},
{"id":1, "name":"sallency", "age": 26},
{"id":1, "name":"sallency", "age": 26},
{"id":1, "name":"sallency", "age": 26},
{"id":1, "name":"sallency", "age": 26}]
}

但是這可能會有請求時數(shù)據(jù)賦值不了的情況,那時你就會干著急了盒齿,下面還可以使用如下方式進行數(shù)據(jù)渲染念逞。這個效果和上面一個不一樣,這里就不上圖了边翁。同樣第一步要引入官網(wǎng)所要求的的css/js等文件翎承。

  var $table = $("#product");
    $table.bootstrapTable({
        url: "http://192.168.6.240:8080/form", 
        dataType: "json",
        contentType: "application/x-www-form-urlencoded",

        // toolbar: '#toolbar',                //工具按鈕用哪個容器
         striped: true,                      //是否顯示行間隔色
         cache: false,                       //是否使用緩存,默認為true符匾,所以一般情況下需要設(shè)置一下這個屬性(*)
         pagination: true,                   //是否顯示分頁(*)
         sortable: false,                     //是否啟用排序
         sortOrder: "desc",                   //排序方式
      
         sidePagination: "client",           //分頁方式:client客戶端分頁叨咖,server服務(wù)端分頁(*)
         pageNumber:1,                       //初始化加載第一頁,默認第一頁
         pageSize: 10,                       //每頁的記錄行數(shù)(*)
         pageList:[5,10,20,30],//分頁步進值       //可供選擇的每頁的行數(shù)(*)
        // search:true,               //是否顯示表格搜索,此搜索是客戶端搜索甸各,不會進服務(wù)端垛贤,所以,個人感覺意義不大
        // strictSearch: true,
         oolbarAlign:'right',//工具欄對齊方式
         buttonsAlign:'right',//按鈕對齊方式
        // showColumns: true,                  //是否顯示所有的列
        // showRefresh: true,                  //是否顯示刷新按鈕
         minimumCountColumns: 2,             //最少允許的列數(shù)
         clickToSelect: true,                //是否啟用點擊選中行
         //height: 500,                        //行高趣倾,如果沒有設(shè)置height屬性聘惦,表格自動根據(jù)記錄條數(shù)覺得表格高度
         uniqueId: "id",                     //每一行的唯一標(biāo)識,一般為主鍵列
        // showToggle:true,                    //是否顯示詳細視圖和列表視圖的切換按鈕
         cardView: false,                    //是否顯示詳細視圖
        // detailView: false,                   //是否顯示父子表onEditableSave
        // singleSelect: false,
        // striped: true, //是否顯示行間隔色
        // cache: false, //是否使用緩存儒恋,默認為true善绎,所以一般情況下需要設(shè)置一下這個屬性(*)
        // sortable: true, //是否啟用排序 
        // pagination: true,   //顯示分頁按鈕
        // sortName:"starttime",
        // sortOrder:"desc", //默認排序
        // pageNumber: 1, //初始化加載第一頁,默認第一頁
        // pageSize: 10,   //默認顯示的每頁個數(shù)
        // showRefresh: true,                  //是否顯示刷新按鈕
        // showPaginationSwitch: true,       //是否顯示選擇分頁數(shù)按鈕
        // queryParamsType: '', //默認值為 'limit' ,在默認情況下 傳給服務(wù)端的參數(shù)為:offset,limit,sort // 設(shè)置為 '' 在這種情況下傳給服務(wù)器的參數(shù)為:pageSize,pageNumber
         queryParams:function(params){
             var temp = {     
                pageSize: params.pageSize,   //頁面大小
                pageNumber: params.pageNumber,  //頁碼
                 table_data:tempdata,
               
            }
            return temp;
        },
        responseHandler:function(res){
            //動態(tài)渲染表格之前獲取有后臺傳遞的數(shù)據(jù)時,用于獲取出除去本身渲染所需的數(shù)據(jù)的額外參數(shù)
            //詳見此函數(shù)參數(shù)的api
            return res;
        },
       // search: true, //顯示搜索框(客戶端搜索)
       //sidePagination: "server", //服務(wù)端處理分頁
       // showToggle:true,                    //是否顯示詳細視圖和列表視圖的切換按鈕
        cardView: false,                    //是否顯示詳細視圖
       // detailView: false,                   //是否顯示父子表
        columns: [{
            title : '備注',
            field : 'code',
            align : 'center',
            width :  100,
            valign : 'middle',
           
        },{
            title : '操作',
            field : 'name',
            align : 'center',
            width :  120 ,
            valign : 'middle',
           
        },
        {
            title : '編碼',
            field : 'calcMode',
            align : 'center',
            width :  120 ,
            valign : 'middle',
           
        }],
      
        onLoadSuccess: function(){  //加載成功時執(zhí)行  
            alert("加載數(shù)據(jù)成功");  
        },  
        onLoadError: function(){  //加載失敗時執(zhí)行  
            alert("加載數(shù)據(jù)失敗");  
        }        
    });

};

會使用之后是不是覺得比自己寫的table更好用多了诫尽,還不用寫一大堆js和div等禀酱,還有更多功能可以去官網(wǎng)了解怎么使用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牧嫉,一起剝皮案震驚了整個濱河市剂跟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酣藻,老刑警劉巖浩聋,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異臊恋,居然都是意外死亡衣洁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門抖仅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坊夫,“玉大人,你說我怎么就攤上這事撤卢』吩洌” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵放吩,是天一觀的道長智听。 經(jīng)常有香客問我,道長渡紫,這世上最難降的妖魔是什么到推? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮惕澎,結(jié)果婚禮上莉测,老公的妹妹穿的比我還像新娘。我一直安慰自己唧喉,他們只是感情好捣卤,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布忍抽。 她就那樣靜靜地躺著,像睡著了一般董朝。 火紅的嫁衣襯著肌膚如雪鸠项。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天子姜,我揣著相機與錄音祟绊,去河邊找鬼。 笑死闲询,一個胖子當(dāng)著我的面吹牛久免,可吹牛的內(nèi)容都是我干的浅辙。 我是一名探鬼主播扭弧,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼记舆!你這毒婦竟也來了鸽捻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤泽腮,失蹤者是張志新(化名)和其女友劉穎御蒲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诊赊,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡厚满,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碧磅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碘箍。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鲸郊,靈堂內(nèi)的尸體忽然破棺而出丰榴,到底是詐尸還是另有隱情,我是刑警寧澤秆撮,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布四濒,位于F島的核電站,受9級特大地震影響职辨,放射性物質(zhì)發(fā)生泄漏盗蟆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一舒裤、第九天 我趴在偏房一處隱蔽的房頂上張望姆涩。 院中可真熱鬧,春花似錦惭每、人聲如沸骨饿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宏赘。三九已至绒北,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間察署,已是汗流浹背闷游。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贴汪,地道東北人脐往。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像扳埂,于是被迫代替她去往敵國和親业簿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

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

  • 在業(yè)務(wù)系統(tǒng)開發(fā)中阳懂,對表格記錄的查詢梅尤、分頁、排序等處理是非常常見的岩调,在Web開發(fā)中巷燥,可以采用很多功能強大的插件來滿足...
    往事隨feng閱讀 3,320評論 0 13
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,814評論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法号枕,內(nèi)部類的語法缰揪,繼承相關(guān)的語法,異常的語法葱淳,線程的語...
    子非魚_t_閱讀 31,664評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理钝腺,服務(wù)發(fā)現(xiàn),斷路器蛙紫,智...
    卡卡羅2017閱讀 134,702評論 18 139
  • 1. http://jr.veyd.cn/ 2. 給這個復(fù)制一個改成你的domain: 3. 給這里的文件復(fù)制一個...
    yuzhan550閱讀 3,031評論 2 0