bootable-table填坑之路

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

 
 




<-- put your locale files after bootstrap-table.js -->

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

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

Item ID Item Name Item Price
1 Item 1 $1
2 Item 2 $2

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

Item ID Item Name Item Price

这里的field是根据远程连接返回的不同key值来设置的,
data-width:设置这一列的宽度
data-formatter 设置的是这一列渲染的展示方法,如下:

function vestSatusFormatter(val,row,index){

if(val)
return ''+val+''

else 

return '无数据'
}  

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

3、通过table的id设置

$('#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控制头部固定,但是会影响拖拽的效果所以要加这一句

$(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; }

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

你可能感兴趣的:(bootable-table填坑之路)