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 相关文章推荐
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
Mar 23 Javascript
js前台分页显示后端JAVA数据响应
Mar 18 Javascript
jquery实现pager控件示例
Apr 09 Javascript
node.js中的dns.getServers方法使用说明
Dec 08 Javascript
Js的Array数组对象详解
Feb 22 Javascript
COM组件中调用JavaScript函数详解及实例
Feb 23 Javascript
基于React实现表单数据的添加和删除详解
Mar 14 Javascript
基于node.js制作简单爬虫教程
Jun 29 Javascript
vue项目环境变量配置的实现方法
Oct 12 Javascript
vue项目打包之后背景样式丢失的解决方案
Jan 17 Javascript
JS实现查找数组中对象的属性值是否存在示例
May 24 Javascript
Node.js API详解之 querystring用法实例分析
Apr 29 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
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
常用的 JS 排序算法 整理版
2018/04/05 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Django开发的简易留言板案例详解
2018/12/04 Python
python tkinter窗口最大化的实现
2019/07/15 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
python可视化实现KNN算法
2019/10/16 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
python 爬取疫情数据的源码
2020/02/09 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
英国门把手公司:Door Handle Company
2019/05/12 全球购物
介绍一下JMS编程步骤
2015/09/22 面试题
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL