bootstrap表格插件——Bootstrap-Table
注:本文引用自:http://www.cnblogs.com/wuhuacong/p/7284420.html
一、概述
1.是什么
是一个基于bootstrap的灌数据式的表格插件
2.能干什么
可以实现查询、分页、排序、复选框、设置显示列、Card view视图、主从表显示、合并列、国际化处理等处理功能,以及一些不错的扩展功能
3.怎么干
插件官网:http://bootstrap-table.wenzhixin.net.cn/
官方示例:http://bootstrap-table.wenzhixin.net.cn/examples/ (FQ查看效果更佳)
下载地址:https://github.com/wenzhixin/bootstrap-table
依赖bootstrap:http://v3.bootcss.com/getting-started/#download (依赖 jQuery,如何引入bootstrap样式请参见bootstrap随笔)
示例demo根据此目录结构引入样式,实际操作时请根据实际情况

样式引入:
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<script src="bootstrap/js/jquery.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="bootstrap-table/dist/bootstrap-table.css">
<script src="bootstrap-table/dist/bootstrap-table.js"></script>
<!--汉化文件,放在 bootstrap-table.js 后面-->
<script src="bootstrap-table/dist/locale/bootstrap-table-zh-CN.js"></script>
二、起步
根据文档中的起步:http://bootstrap-table.wenzhixin.net.cn/getting-started/ ,我们知道两种初始化方式:
1.HTML方式:
<table data-toggle="table" data-url="http://localhost:8080/jeesite/f/test/test/btList">
<thead>
<tr>
<th data-field="id">Item ID</th>
<th data-field="name">Item Name</th>
<th data-field="price">Item Price</th>
</tr>
</thead>
</table>
//请注意加上 http://
2.JS方式
<table id="table"></table>
<script type="text/javascript">
$('#table').bootstrapTable({
url: 'http://localhost:8080/jeesite/f/test/test/btList',
columns: [{
field: 'id',
title: 'Item ID'
}, {
field: 'name',
title: 'Item Name'
}, {
field: 'price',
title: 'Item Price'
}, ]
});
</script>
//同样,请注意url的完整性写法
后台使用的是sprinMVC的简单测试:
/**
* 测试Bootstrap-Table
* @return
*/
@RequestMapping(value = "btList")
@ResponseBody
public List<BTItemTest> btList(HttpServletResponse response){
BTItemTest b1 = new BTItemTest("1001","马邦德","100");
BTItemTest b2 = new BTItemTest("1002","县长","200");
BTItemTest b3 = new BTItemTest("1003","黄四郎","400");
List<BTItemTest> list = new ArrayList<BTItemTest>();
list.add(b1);
list.add(b2);
list.add(b3);
response.setHeader("Access-Control-Allow-Origin", "*");
return list;
}
效果:

当然,表格有点长了,这里可以使用栅格系统进行限制:(限制大小,限制偏移)
<div class="row">
<div class="col-md-10">
<table id="table"></table>
</div>
</div>
三、详细使用
常见参数可以参见文首博客作者的随笔,如下:
var $table;
//初始化bootstrap-table的内容
function InitMainTable () {
//记录页面bootstrap-table全局变量$table,方便应用
var queryUrl = '/TestUser/FindWithPager?rnd=' + Math.random()
$table = $('#grid').bootstrapTable({
url: queryUrl, //请求后台的URL(*)
method: 'GET', //请求方式(*)
//toolbar: '#toolbar', //工具按钮用哪个容器
striped: true, //是否显示行间隔色
cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
pagination: true, //是否显示分页(*)
sortable: true, //是否启用排序
sortOrder: "asc", //排序方式
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
pageNumber: 1, //初始化加载第一页,默认第一页,并记录
pageSize: rows, //每页的记录行数(*)
pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
search: false, //是否显示表格搜索
strictSearch: true,
showColumns: true, //是否显示所有的列(选择显示的列)
showRefresh: true, //是否显示刷新按钮
minimumCountColumns: 2, //最少允许的列数
clickToSelect: true, //是否启用点击选中行
//height: 500, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
uniqueId: "ID", //每一行的唯一标识,一般为主键列
showToggle: true, //是否显示详细视图和列表视图的切换按钮
cardView: false, //是否显示详细视图
detailView: false, //是否显示父子表
//得到查询的参数
queryParams : function (params) {
//这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
var temp = {
rows: params.limit, //页面大小
page: (params.offset / params.limit) + 1, //页码
sort: params.sort, //排序列名
sortOrder: params.order //排位命令(desc,asc)
};
return temp;
},
columns: [{
checkbox: true,
visible: true //是否显示复选框
}, {
field: 'Name',
title: '姓名',
sortable: true
}, {
field: 'Mobile',
title: '手机',
sortable: true
}, {
field: 'Email',
title: '邮箱',
sortable: true,
formatter: emailFormatter
}, {
field: 'Homepage',
title: '主页',
formatter: linkFormatter
}, {
field: 'Hobby',
title: '兴趣爱好'
}, {
field: 'Gender',
title: '性别',
sortable: true
}, {
field: 'Age',
title: '年龄'
}, {
field: 'BirthDate',
title: '出生日期',
formatter: dateFormatter
}, {
field: 'Height',
title: '身高'
}, {
field: 'Note',
title: '备注'
}, {
field:'ID',
title: '操作',
width: 120,
align: 'center',
valign: 'middle',
formatter: actionFormatter
}, ],
onLoadSuccess: function () {
},
onLoadError: function () {
showTips("数据加载失败!");
},
onDblClickRow: function (row, $element) {
var id = row.ID;
EditViewById(id, 'view');
},
});
};
例如,简单的客户端分页:(完全的参数请参见文档,例如method等参数)
$(function(){
initTable();
});
var $table;
//初始化table
function initTable(){
var queryUrl = "http://localhost:8080/jeesite/f/test/test/btList";
$table = $('#table').bootstrapTable({
url: queryUrl,
cache: false,
pagination: true,
sidePagination: "client",
pageNumber: 1, //初始化加载第一页,默认第一页,并记录
pageSize: 5,
pageList: [5,10],
columns: [
{ checkbox: true,
visible: true //是否显示复选框
},{
field: 'id',
title: 'Item ID'
}, {
field: 'name',
title: 'Item Name'
}, {
field: 'price',
title: 'Item Price'
}, ]
});
}
效果:

//少量数据适合此方式
服务端分页的形式
注意:
[json]必须包含:total节点(总记录数),rows节点(分页后数据)
即:{“total”:24,”rows”:[…]}
先看简单版的服务端分页(分页插件采用mybatis官方推荐的pagehelper)
前台页面:
$(function(){
initTable();
});
var $table;
//初始化table
function initTable(){
var queryUrl = "http://localhost:8080/jeesite/f/test/test/btList";
$table = $('#table').bootstrapTable({
//此URL传递表格插件的固定参数,获取固定格式数据
url: queryUrl,
//请求方式
method:"GET",
//设置表格样式,是否隔行换色,使用条纹样式
striped:true,
//设置是否使用缓存,一般设置false
cache: false,
//是否显示搜索
search: false,
//是否开启分页
pagination: true,
//分页方式:client客户端分页,server服务端分页(*)
sidePagination: "server",
//初始化加载第一页,默认第一页,并记录
pageNumber: 1,
//每页的记录行数(*)
pageSize: 5,
//可供选择的每页的行数(*)
pageList: [5,10],
//得到查询的参数
queryParams : function (params) {
//这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
var temp = {
rows: params.limit, //页面大小
page: (params.offset / params.limit) + 1, //页码
};
return temp;
},
columns: [
{
//是否显示复选框
checkbox: true,
visible: true
},{
field: 'id',
title: 'Item ID',
align: 'center'
}, {
field: 'name',
title: 'Item Name',
align: 'center'
}, {
field: 'price',
title: 'Item Price',
align: 'center'
},
{
field: 'id',
title: '操作',
align: 'center',
formatter:function(value,row,index){ //转义函数formatter
//通过formatter可以自定义列显示的内容
//value:当前field的值,即id
//row:当前行的数据
var a = '<a href="" >测试</a>';
}
}]
});
}
完整页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Bootstrap-Table</title>
<!-- 引入bootstrap-->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<script src="bootstrap/js/jquery.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<!--引入bootstrap-table -->
<link rel="stylesheet" href="bootstrap-table/dist/bootstrap-table.css">
<script src="bootstrap-table/dist/bootstrap-table.js"></script>
<!--汉化文件,放在 bootstrap-table.js 后面-->
<script src="bootstrap-table/dist/locale/bootstrap-table-zh-CN.js"></script>
</head>
<body>
<h4>数据表格</h4>
<!-- <table data-toggle="table" data-url="http://localhost:8080/jeesite/f/test/test/btList">
<thead>
<tr>
<th data-field="id">Item ID</th>
<th data-field="name">Item Name</th>
<th data-field="price">Item Price</th>
</tr>
</thead>
</table> -->
<div class="row">
<div class="col-md-10">
<table id="table"></table>
</div>
</div>
<script type="text/javascript">
/* $('#table').bootstrapTable({
url: 'http://localhost:8080/jeesite/f/test/test/btList',
columns: [{
field: 'id',
title: 'Item ID'
}, {
field: 'name',
title: 'Item Name'
}, {
field: 'price',
title: 'Item Price'
}, ]
}); */
$(function(){
initTable();
});
var $table;
//初始化table
function initTable(){
var queryUrl = "http://localhost:8080/jeesite/f/test/test/btList";
$table = $('#table').bootstrapTable({
//此URL传递表格插件的固定参数,获取固定格式数据
url: queryUrl,
//请求方式
method:"GET",
//设置表格样式,是否隔行换色,使用条纹样式
striped:true,
//设置是否使用缓存,一般设置false
cache: false,
//是否显示搜索
search: false,
//是否开启分页
pagination: true,
//分页方式:client客户端分页,server服务端分页(*)
sidePagination: "server",
//初始化加载第一页,默认第一页,并记录
pageNumber: 1,
//每页的记录行数(*)
pageSize: 5,
//可供选择的每页的行数(*)
pageList: [5,10],
//得到查询的参数
queryParams : function (params) {
//这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
var temp = {
rows: params.limit, //页面大小
page: (params.offset / params.limit) + 1, //页码
};
return temp;
},
columns: [
{
//是否显示复选框
checkbox: true,
visible: true
},{
field: 'id',
title: 'Item ID',
align: 'center'
}, {
field: 'name',
title: 'Item Name',
align: 'center'
}, {
field: 'price',
title: 'Item Price',
align: 'center'
},
{
field: 'id',
title: '操作',
align: 'center',
formatter:function(value,row,index){ //转义函数formatter
//通过formatter可以自定义列显示的内容
//value:当前field的值,即id
//row:当前行的数据
var a = '<a href="" >测试</a>';
}
}]
});
}
</script>
</body>
</html>
服务端代码采用经典的SSM
@RequestMapping(value = "btList",method = RequestMethod.GET)
@ResponseBody
public Map<String,Object> btList(Integer rows,Integer page){
System.out.println("页面大小:"+rows);
System.out.println("页码:"+page);
//从第多少页开始,每页显示rows条记录
PageHelper.startPage(page, rows);
//后面紧跟的查询就是分页查询
List<BTItemTest> itemList = testService.findAllItems();
//用PageInfo对结果进行包装,只需要将PageInfo交给页面即可,这里面封装了详细的信息,第二个参数为需要连续显示的记录数
PageInfo pageInfo = new PageInfo(itemList,5);
//构造返回指定格式的map,用于转成JSON
Map<String,Object> map = new HashMap<String,Object>();
//构造返回数据
int totalInt = (int) pageInfo.getTotal();
map.put("total", totalInt);
map.put("rows", pageInfo.getList());
System.out.println(map);
//必须返回指定格式的JSON
return map;
}
实体类还是官方的例子:
public class BTItemTest {
private String id;
private String name;
private String price;
第一个服务端分页的demo效果如下:

bootstrap表格插件——Bootstrap-Table的更多相关文章
- Bootstrap Bootstrap表格插件bootstrap-table配置与应用小结
Bootstrap表格插件bootstrap-table配置与应用小结 by:授客 QQ:1033553122 1. 测试环境 win7 JQuery-3.2.1.min.js 下载地址: h ...
- 好用的自适应表格插件-bootstrap table (支持固定表头)
最近工作中找到了一款十分好用的表格插件,不但支持分页,样式,搜索,事件等等表格插件常有的功能外,最主要的就是他自带的冻结表头功能,让开发制作表格十分容易,不过网上大多都是英文文档,第一次使用会比较麻烦 ...
- 【转载】BootStrap表格组件bootstrap table详解
(转载,来源“脚本之家”,作者不详) 一.Bootstrap Table的引入 关于Bootstrap Table的引入,一般来说还是两种方法: 1.直接下载源码,添加到项目里面来.由于Bootstr ...
- 轻量级表格插件Bootstrap Table。拥有强大的支持固定表头、单/复选、排序、分页、搜索及自定义表头等功能。
Bootstrap Table是轻量级的和功能丰富的以表格的形式显示的数据,支持单选,复选框,排序,分页,显示/隐藏列,固定标题滚动表,响应式设计,Ajax加载JSON数据,点击排序的列,卡片视图等. ...
- Bootstrap表格组件 Bootstrap Table
Bootstrap Table是Bootstrap的一个组件 Bootstrap Table Demo:http://issues.wenzhixin.net.cn/bootstrap-table/i ...
- Bootstrap分页插件--Bootstrap Paginator
开源中国有一篇介绍的很详细,链接:https://my.oschina.net/shunshun/blog/204587 使用这个插件和使用其他Bootstrap内置的插件一样,需要引入如下文件: & ...
- bootstrap分页插件--Bootstrap Paginator的使用&AJAX版备份(可单独使用)
html部分: <ul class="pagination"></ul> <!--bootstrap3版本用ul包裹--> <div cl ...
- bootstrap评分插件 Bootstrap Star Rating Examples
http://www.jq22.com/demo/bootstrap-star-rating-master201708041812/
- 【原创】bootstrap框架的学习 第七课 -[bootstrap表格]
Bootstrap 表格 标签 描述 <table> 为表格添加基础样式. <thead> 表格标题行的容器元素(<tr>),用来标识表格列. <tbody& ...
随机推荐
- + - ! function($) (), function 前面的符号意思
如果在function之前加上感叹号 (!) 会怎么样?比如下面的代码: !function(){alert('iifksp')}() // true 在控制台运行后得到的值时true, ...
- 关闭window端口445
首先,来查看下系统当前都开放了什么端口,怎样查看呢?调出cmd命令行程序,输入命令”netstat -na“,可以看到. 接着,可以发现当前系统开放了135.445以及5357端口,而且从状态看都处于 ...
- Vmstat主要关注哪些数据?
除特殊情况外,一般关注飘红部分 任务的信息(procs) r(running) 在internal时间段里,运行队列中的进程数,即表示正在运行或者正在等待CPU时间的进程数,如果这个参数值超过服务器上 ...
- MySQL存储过程-遍历游标的例子
delimiter $$DROP PROCEDURE IF EXISTS pro_test ;CREATE PROCEDURE pro_test()begin DECLARE var_name var ...
- ubuntu卸载virtualbox
本想在ubuntu下virtualbox,可惜出错了,需要卸载后再安装,只能百度拼凑后再安装: 1.首先是执行删除命令:sudo apt-get remove virtualbox*( 这样就不用去查 ...
- Java工具类(util) 之01- 数学运算工具(精确运算)
数学运算工具(精确运算) /** * * @author maple * */ public abstract class AmountUtil { private AmountUtil() { } ...
- WEB安全 ACCESS 注入、盲注脚本
http://www.xxx.cn/cp.asp?classid=3http://www.xxx.cn/cp.asp?classid=3 and //有拦截关键字http://www.xxx.cn/c ...
- BigDecimal.setScale用法总结
1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失 2. BigDecimal num2 = new BigDecimal( ...
- UVA - 1197 (简单并查集计数)
Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized ...
- 网络测量中基于Sketch方法的简单介绍
Sketch介绍 为什么要用Sketch 网络流主要根据五元组.主机地址.包的大小来分类.在网络中存在各种各样的包,如果按照上述分类方法,对每一种包都分配一个计数器来储存,虽然测量准确,那么存放计数器 ...