值得分享的bootstrap table实例


Posted in Javascript onSeptember 22, 2016

bootstrap table 封装了一套完善的数据表格组件,把下面的代码复制一下估计你需要的基本功能都有了,没有的再看看手册对比着我给的实例也能很快的熟悉了。

值得分享的bootstrap table实例

值得分享的bootstrap table实例

客户端

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>Bootstrap-Table</title>
 <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"/>
 <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">
  ×
 </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() {
 //根据窗口调整表格高度
 $(window).resize(function() {
 $('#mytab').bootstrapTable('resetView', {
 height: tableHeight()
 })
 })

 $('#mytab').bootstrapTable({
 url: "index.php",//数据源
 dataField: "rows",//服务端返回数据键值 就是说记录放的键值是rows,分页时使用总记录数的键值为total
 height: tableHeight(),//高度调整
 search: true,//是否搜索
 pagination: true,//是否分页
 pageSize: 20,//单页记录数
 pageList: [5, 10, 20, 50],//分页步进值
 sidePagination: "server",//服务端分页
 contentType: "application/x-www-form-urlencoded",//请求数据内容格式 默认是 application/json 自己根据格式自行服务端处理
 dataType: "json",//期待返回数据类型
 method: "post",//请求方式
 searchAlign: "left",//查询框对齐方式
 queryParamsType: "limit",//查询参数组织方式
 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"//垂直
 },
 {
 title: "ID",//标题
 field: "id",//键名
 sortable: true,//是否可排序
 order: "desc"//默认排序方式
 },
 {
 field: "name",
 title: "NAME",
 sortable: true,
 titleTooltip: "this is name"
 },
 {
 field: "age",
 title: "AGE",
 sortable: true,
 },
 {
 field: "info",
 title: "INFO[using-formatter]",
 formatter: 'infoFormatter',//对本列数据做格式化
 }
 ],
 onClickRow: function(row, $element) {
 //$element是当前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;
 }
 /**
 * 列的格式化函数 在数据从服务端返回装载前进行处理
 * @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>

服务端:

<?php
/**
 * 服务端模拟数据
 */

//前端期望数据为json
header("Content-Type:application/json;charset=utf-8");
//post 请求 请求内容类型为 application/x-www-form-urlencoded 如果是 application/json 则需要另行处理 $_POST 数组不会被填充

//为了保持模拟的数据
session_start();

if ($_SESSION['emulate_data']) {
 //已生成
} else {
 $list = [];
 //第一次会模拟个数据
 for($i = 1; $i < 50; $i ++) {
 $list[] = [
 "id" => $i,
 "name" => substr(str_shuffle(implode('', range('a', 'z'))), 0, 5),
 "age" => mt_rand(10, 30)
 ];
 }
 $_SESSION['emulate_data'] = $list;
}

$list_temp = [];
//检索
if (isset($_POST['search']) && !empty($_POST['search'])) {
 foreach ($_SESSION['emulate_data'] as $key => $row) {
 if (strpos($row['name'], $_POST['search']) !== false 
 || strpos($row['age'], $_POST['search']) !== false) {
 $list_temp[] = $_SESSION['emulate_data'][$key];
 }
 }
} else {
 $list_temp = $_SESSION['emulate_data'];
}
//排序
if (isset($_POST['sort'])) {
 $temp = [];
 foreach ($list_temp as $row) {
 $temp[] = $row[$_POST['sort']];
 }
 //php的多维排序
 array_multisort($temp,
 $_POST['sort'] == 'name' ? SORT_STRING : SORT_NUMERIC,
 $_POST['order'] == 'asc' ? SORT_ASC : SORT_DESC,
 $list_temp
 );
}

//分页时需要获取记录总数,键值为 total
$result["total"] = count($list_temp);
//根据传递过来的分页偏移量和分页量截取模拟分页 rows 可以根据前端的 dataField 来设置
$result["rows"] = array_slice($list_temp, $_POST['offset'], $_POST['limit']);

echo json_encode($result);

需要注意的是

1、bootstrap table 可以前端分页也可以后端分页,这里我们使用的是后端分页,后端分页时需返回含有

total:总记录数 这个键值好像是固定的,我看文档没找到可以修改成别的

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}]
}

如上的json数据(当然我前台设置的期望数据类型是json,php 直接encode一个 ["total"=>200, "rows"=>[[],[],][,][,]]的数组就完事了,方便)

2、且其请求后端是传递的内容格式默认为 application/json 我自己习惯用方便的 x-www-form-urlencoded

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery Migrate 1.1.0 Released 注意事项
Jun 14 Javascript
详解JavaScript对象和数组
Dec 03 Javascript
jQuery给表格添加分页效果
Mar 02 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
May 28 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
Jul 24 Javascript
input 标签实现输入框带提示文字效果(两种方法)
Oct 09 Javascript
在vue中,v-for的索引index在html中的使用方法
Mar 06 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
通过实例学习React中事件节流防抖
Jun 17 Javascript
vue登录注册实例详解
Sep 14 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
Jul 22 Javascript
第一次动手实现bootstrap table分页效果
Sep 22 #Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 #Javascript
Javascript从数组中随机取出不同元素的两种方法
Sep 22 #Javascript
JavaScript面试题大全(推荐)
Sep 22 #Javascript
JavaScript 是什么意思
Sep 22 #Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 #Javascript
JavaScript与java语言有什么不同
Sep 22 #Javascript
You might like
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
php json相关函数用法示例
2017/03/28 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
JavaScript全局函数使用简单说明
2011/03/11 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
详解Node 定时器
2018/02/26 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python如何通过twisted实现数据库异步插入
2018/03/20 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
《新型玻璃》教学反思
2014/04/13 职场文书
英文求职信范文
2014/05/23 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
python处理json数据文件
2022/04/11 Python