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 相关文章推荐
js传值 判断
Oct 26 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
Dec 25 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
Jun 06 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
smartcrop.js智能图片裁剪库
Oct 14 Javascript
基于JavaScript操作DOM常用的API小结
Dec 01 Javascript
jQuery隐藏和显示效果实现
Apr 06 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 Javascript
Vue中保存数据到磁盘文件的方法
Sep 06 Javascript
怎么使用javascript深度拷贝一个数组
Jun 06 Javascript
Vuex 模块化使用详解
Jul 31 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
Nov 03 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 list()函数的详解
2013/06/05 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
jquery 简单应用示例总结
2013/08/09 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python操作redis方法总结
2018/06/06 Python
基于python中theano库的线性回归
2018/08/31 Python
详解用python生成随机数的几种方法
2019/08/04 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
用python读取xlsx文件
2020/12/17 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
python re模块和正则表达式
2021/03/24 Python
绩效专员岗位职责
2013/12/02 职场文书
机械制造专业毕业生求职信
2014/03/02 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
雷峰塔导游词
2015/02/09 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
Golang map映射的用法
2022/04/22 Golang