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 相关文章推荐
推荐30个新鲜出炉的精美 jQuery 效果
Mar 26 Javascript
jquery选择器之属性过滤选择器详解
Jan 27 Javascript
javascript页面加载完执行事件代码
Feb 11 Javascript
JavaScript合并两个数组并去除重复项的方法
Jun 13 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
逻辑表达式中与或非的用法详解
Jun 06 Javascript
JavaScript组合模式学习要点
Aug 26 Javascript
标准的js无缝滚动效果
Aug 30 Javascript
React学习笔记之事件处理(二)
Jul 02 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
微信小程序实现拍照画布指定区域生成图片
Jul 18 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
Dec 06 Javascript
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时区转换转换函数
2014/01/07 PHP
php数据序列化测试实例详解
2017/08/12 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
2011/03/10 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
解决Python传递中文参数的问题
2015/08/04 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
Python常见数据类型转换操作示例
2019/05/08 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
博士毕业生自我鉴定范文
2014/04/13 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
村级个人对照检查材料
2014/08/22 职场文书
学校师德师风整改措施
2014/10/27 职场文书
助学金感谢信
2015/01/20 职场文书
党支部意见范文
2015/06/02 职场文书
六年级情感作文之500字
2019/10/23 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python