bootstrap table 多选框分页保留示例代码


Posted in Javascript onMarch 08, 2017

在使用bootstrap table的复选框功能的时候,由于采用服务端分页,当在第一页选择了某些数据,然后点击第二页选择一些数据,再次点回第一页,发现原先选择的数据已经清空了,原来的多选框并不支持翻页保留多选数据。

解决思路:

在分页的时候,吧原先选择的数据用一个全局变量保存,当再次翻页回来时,判断当前页数据是否存在于保存的数据数组中,存在则状态为选择。当然当取消选择的时候也要去删除数组中相应的数据。

为了解决这个问题,在查github上查文档发现有人提出了这个问题,并且作者wenzhixin 也编写了相应的例子来演示,想看原问题的点击打开链接。

想直接看示例的点击打开链接

原示例是使用html方式来实现的表格,并使用服务端分页。并且相关js方法并不完善,我也踩了很多坑,所以本博客在原作者编写的示例的基础上,做了相关更改,在此展示和说明:

bootstrap table 多选框分页保留示例代码

var $table; 
var selectionIds = []; //保存选中ids 
$(function () { 
 $table = $("#example1").bootstrapTable({ 
 contentType:"application/x-www-form-urlencoded; charset=UTF-8", //初始化编码 
 url:'<%=basePath%>/order/queryOrderList', 
 method: 'post', 
 striped:true,  //奇偶行渐色表 
 pagination:true, //显示分页 
 clickToSelect:true, //是否选中 
 maintainSelected:true, 
 sidePagination: "server", //服务端分页 
 idField:"id", 
 pageSize: 10, 
 responseHandler:responseHandler, //在渲染页面数据之前执行的方法,此配置很重要!!!!!!! 
 columns: [ 
  {field: 'checkStatus',checkbox: true}, //给多选框赋一个field值为“checkStatus”用于更改选择状态!!!!! 
  {field: 'id',visible:false}, 
  {field: 'orderNumber',title: "订单编号",align:'center',width:'10%'} 
 ] 
 }); 
 //选中事件操作数组 
 var union = function(array,ids){ 
 $.each(ids, function (i, id) { 
  if($.inArray(id,array)==-1){ 
  array[array.length] = id; 
  } 
  }); 
  return array; 
 }; 
 //取消选中事件操作数组 
 var difference = function(array,ids){ 
  $.each(ids, function (i, id) { 
   var index = $.inArray(id,array); 
   if(index!=-1){ 
   array.splice(index, 1); 
   } 
  }); 
  return array; 
 }; 
 var _ = {"union":union,"difference":difference}; 
 //绑定选中事件、取消事件、全部选中、全部取消 
 $table.on('check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table', function (e, rows) { 
  var ids = $.map(!$.isArray(rows) ? [rows] : rows, function (row) { 
   return row.id; 
  }); 
  func = $.inArray(e.type, ['check', 'check-all']) > -1 ? 'union' : 'difference'; 
  selectionIds = _[func](selectionIds, ids); 
 }); 
}); 
 //表格分页之前处理多选框数据 
 function responseHandler(res) { 
  $.each(res.rows, function (i, row) { 
  row.checkStatus = $.inArray(row.id, selectionIds) != -1; //判断当前行的数据id是否存在与选中的数组,存在则将多选框状态变为true 
  }); 
  return res; 
 }

 原示例中并没有给出union和difference方法,是我自己按着思路实现的。开始并没有实现此功能,后来发现要给checkbox字段加上一个filed字段,并与responseHandler方法中更改的row字段一致,才能实现功能。

以上所述是小编给大家介绍的bootstrap table 多选框分页保留示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript中 关于prototype属性实现继承的原理图
Apr 16 Javascript
JS 去前后空格大全(IE9亲测)
Jul 15 Javascript
Javascript 字符串模板的简单实现
Feb 13 Javascript
jQuery EasyUI封装简化操作
Sep 18 Javascript
js实现倒计时及时间对象
Nov 15 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
Jan 04 Javascript
详解ES6中的代理模式——Proxy
Jan 08 Javascript
JavaScript执行环境及作用域链实例分析
Aug 01 Javascript
vue+element-ui+axios实现图片上传
Aug 20 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
Oct 29 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
Nov 10 Javascript
vue elementUI批量上传文件
Apr 26 Vue.js
JS仿JQuery选择器功能
Mar 08 #Javascript
vue数据双向绑定原理解析(get &amp; set)
Mar 08 #Javascript
footer定位页面底部(代码分享)
Mar 07 #Javascript
vue父子组件的数据传递示例
Mar 07 #Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
Mar 07 #Javascript
完美实现js焦点轮播效果(一)
Mar 07 #Javascript
Vue2.0组件间数据传递示例
Mar 07 #Javascript
You might like
PHP编码规范-php coding standard
2007/03/16 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
php依赖注入知识点详解
2019/09/23 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python字典及字典基本操作方法详解
2018/01/30 Python
python实现list由于numpy array的转换
2018/04/04 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
使用Python处理BAM的方法
2018/09/28 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
QML使用Python的函数过程解析
2019/09/26 Python
Django继承自带user表并重写的例子
2019/11/18 Python
基于Python实现扑克牌面试题
2019/12/11 Python
Python while循环使用else语句代码实例
2020/02/07 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
印刷工程专业应届生求职信
2013/09/29 职场文书
化工机械应届生求职信
2013/11/04 职场文书
服务质量承诺书
2014/03/27 职场文书
投资意向书范本
2014/04/01 职场文书
小学学校评估方案
2014/06/08 职场文书
年终晚会活动方案
2014/08/21 职场文书
个人事迹材料范文
2014/12/29 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript