值得分享的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 相关文章推荐
JS正则验证邮箱的格式详细介绍
Nov 19 Javascript
Jquery插件分享之气泡形提示控件grumble.js
May 20 Javascript
jQuery实现流动虚线框的方法
Jan 29 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
Apr 07 Javascript
JavaScript的RequireJS库入门指南
Jul 01 Javascript
深入解读JavaScript中的Hoisting机制
Aug 12 Javascript
微信小程序 video组件详解
Oct 25 Javascript
JS库中的Particles.js在vue上的运用案例分析
Sep 13 Javascript
利用d3.js实现蜂巢图表带动画效果
Sep 03 Javascript
vue中的mescroll搜索运用及各种填坑处理
Oct 30 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
Nov 06 Javascript
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
第一次动手实现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
9段PHP实用功能的代码推荐
2014/10/14 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
php创建无限级树型菜单
2015/11/05 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
在漏洞利用Python代码真的很爽
2007/08/26 Python
python抓取网页图片并放到指定文件夹
2014/04/24 Python
python结合API实现即时天气信息
2016/01/19 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
python多线程与多进程及其区别详解
2019/08/08 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
Python面向对象编程基础实例分析
2020/01/17 Python
python 数据类型强制转换的总结
2021/01/25 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
html5唤醒APP小记
2019/03/27 HTML / CSS
毕业生物理教师求职信
2013/10/17 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
服务员岗位职责
2014/01/29 职场文书
给学校建议书范文
2014/05/13 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
大学运动会通讯稿
2015/07/18 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS
linux目录管理方法介绍
2022/06/01 Servers