zoukankan      html  css  js  c++  java
  • bootstrap-table使用详解

    尴尬,标记果然到了一周之后。。。。

    首先引入文件不必提,引入bootstrap和bootstrap-table

    <link rel="stylesheet" href="bootstrap.min.css">
    <link rel="stylesheet" href="bootstrap-table.css">
    <script src="jquery.min.js"></script>
    <script src="bootstrap.min.js"></script>
    <script src="bootstrap-table.js"></script>
    <-- put your locale files after bootstrap-table.js -->
    <script src="bootstrap-table-zh-CN.js"></script>

    有三种设置table的方式,以下:

    1、对于静态的可以直接设置table

    <table data-toggle="table">
        <thead>
            <tr>
                <th>Item ID</th>
                <th>Item Name</th>
                <th>Item Price</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>Item 1</td>
                <td>$1</td>
            </tr>
            <tr>
                <td>2</td>
                <td>Item 2</td>
                <td>$2</td>
            </tr>
        </tbody>
    </table>
    

    2、设置远程的链接渲染table

    <table data-toggle="table" data-url="data1.json">
        <thead>
            <tr>
                <th data-field="id">Item ID</th>
                <th data-field="name" data-width="60">Item Name</th>
                <th data-field="price"  data-formatter="functionName">Item Price</th>
            </tr>
        </thead>
    </table>
    这里的field是根据远程连接返回的不同key值来设置的,
    data-设置这一列的宽度
    data-formatter 设置的是这一列渲染的展示方法,如下:

    function vestSatusFormatter(val,row,index){
    if(val)
    return '<span title="'+val+'" >'+val+'</span>'

    else 

    return '无数据'
    }  

    val对应这个field返回的值,row是这一行的所有数据,index对应的第几条数据(从0开始),return 返回的即前台用户看到的呈现结果;

    
    

    3、通过table的id设置

    <table id="table" data-url="data1.json"></table> 
    $('#table').bootstrapTable('destroy').bootstrapTable({
     url: 'data1.json', // 改变当前table的链接 ,请求后台的URL(*)可以不需要
    method: 'post',    //请求方式(*)
    toolbar: toolbar, //工具按钮用哪个容器
    striped: true, //是否显示行间隔色
    cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
    pagination: true, //是否显示分页(*)
    sortable: false, //是否启用排序
    sortOrder: "asc", //排序方式
    queryParams: queryParams, //传递参数(*),这里应该返回一个object,即形如{param1:val1,param2:val2}
    sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
    pageNumber:1, //初始化加载第一页,默认第一页
    pageSize: 20, //每页的记录行数(*)
    pageList: [20, 50, 100], //可供选择的每页的行数(*)
    columns: [{
            field: 'id',
            title: 'Item ID'
        }, {
            field: 'name',
            title: 'Item Name'
        }, {
            field: 'price',
            title: 'Item Price'
        }, ]
    });
    

      根据搜索条件刷新table

    $("#"+domId).bootstrapTable('destroy').bootstrapTable({
            striped:true,
            sidePagination: 'server',
            pagination:true,
            pageSize: 10,
            pageList: [10, 20, 50, 100, 200,400],
            queryParams: function(param){
                var query;  
                if(type && search){
                    params['searchType'] = “你的搜索值”;
                    params['searchContent'] = "你的搜索值";
                };
                query=params;
                $.extend(query,param);            
                return query;
            },
            formatLoadingMessage: function(){
              return '正在加载...';
            },
            formatNoMatches: function(){
              return '没有找到数据~';
            },
            formatShowingRows: function(pageFrom, pageTo, totalRows){
              return '共'+totalRows+'条,显示'+pageFrom+'到'+pageTo+'条记录';
            },
            formatRecordsPerPage: function (pageNumber) {
                 return '每页显示 ' + pageNumber + ' 条记录';
            }
          });

    另外的是涉及到后台返回的参数跟原框架的不同,修改

    修改方法
     responseHandler:function (res) {
                return {
                    rows:res.list  //返回的数据详情
                    total:res.total_count, //总条数
                };
            },                

    涉及到保存分页的问题可能会修改bootstrap-table.js源码,主要用到一个方法$(table).bootstrapTable('getOptions')

    在js里定义原型方法 

    BootstrapTable.prototype.getPage = function (params) { 
      return {pageSize: this.options.pageSize, pageNumber: this.options.pageNumber};
    }; //这个只是提供更简洁的一种方法,不一定需要,看个人情况

    并且定义该方法 大概在3015行左右

    var allowedMethods = [
    'getOptions','getPage',
    'getSelections', 'getAllSelections', 'getData'

    ...

    ]

    -----------------------------

    下面可以利用该方法

    function setOptions(table,sessionName) { //获取到当前页码的相关信息 var options = $(table).bootstrapTable('getOptions'), Obj = { "limit":options.pageSize, "offset":(options.pageNumber - 1)*options.pageSize, "sort":options.sortName, "order":options.sortOrder }; }

    最后的是一点展示方面的问题,毕竟是一枚前端仔,你懂得,

    有些table比较高可以设置height控制头部固定,但是会影响拖拽的效果所以要加这一句

    <table id="table" class="data-table" data-height="600" ></table> 
    $(window).resize(function () {
          $('#table').bootstrapTable('resetView');
       });

    当然,如果你的th需要换行,需要这些设置

    #table{
      table-layout: fixed;
    }
    #tabletd{
       word-break:break-all;
       word-wrap:break-word;
    }
    .fixed-table-container thead th .th-inner{
        white-space: pre-line !important;
    }

    暂时想到的只有这些,如果有什么不对的地方欢迎指出,蟹蟹~

  • 相关阅读:
    逆元模板
    同余方程
    计算系数
    Mayan游戏
    【分治】聪明的质检员(二分)
    瑞士轮(归并排序)
    极值问题
    传纸条
    2014-2015-1学期学习计划
    桌面综合实训答辩验收详情
  • 原文地址:https://www.cnblogs.com/simba-lkj/p/8909378.html
Copyright © 2011-2022 走看看