bootstrap table插件的分页与checkbox使用详解


Posted in Javascript onJuly 23, 2017

今天需要实现这样一个功能,有checkbox列表可供选择,要选择不分页之间的行并保存

最终实现的功能如图:(图片来自网上)

bootstrap table插件的分页与checkbox使用详解

具体实现

首先,来看具体的代码,这里只截取实现功能所需代码

var selectionIds =[],selectionNames=[];
  var curd = {
    init:function(){
      this._getCheckParam();
    },

    /**
     * 初始化
     * @private
     */

  /**
   * 表格操作
   */
  //表格分页之前处理多选框数据
  _responseHandler:function()(res) {
    $.each(res.rows, function (i, row) {
      row.checkStatus = $.inArray(row.id, selectionIds) != -1; //判断当前行的数据id是否存在与选中的数组,存在则将多选框状态变为true
    });
    return res;
  },
    _list:function(){
      var _this = this
      var settings = {
        url:Path.searchUrl,
        method:'GET',
        responseHandler:_this.responseHandler, //在渲染页面数据     之前执行的方法
        height:Path.tbheight
      };
      bsTable.initTable("#boostrapTable",settings);
      // 其它的boostrapTable参数已经封装在bsTable里面了,这里就不贴出来了
    },
    /**
     * 获取选中ID
     * @returns {*}
     * @private
     */
    _getIdSelections:function() {
        // 用map进行过滤
        return $.map($('#bootstrapTable').bootstrapTable('getSelections'), function (row) {
          return row.id
        });
      },
    /**
     * 获取选中对象并显示
     * @private
     */
    _getCheckParam:function(){
      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};
      var $table=$('#bootstrapTable');
      //绑定选中事件、取消事件、全部选中、全部取消
      $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;
        });
        var names = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
          return row.name;
        });
        func = $.inArray(e.type, ['check', 'check-all']) > -1 ? 'union' : 'difference';
        selectionIds = _[func](selectionIds, ids);
        selectionNames =_[func](selectionNames,names);
      });
    }
  };
      return curd;

});

比较常用的技巧

使用boostrapTable时候,选择表格的行,返回的rows有很多,这时候需要过滤出我们需要的字段,可以用

function getIdSelections() {
    return $.map($table.bootstrapTable('getSelections'), function (row) {
      return row.id
      // 想返回什么字段就换成什么
    });
  }

当然,如果需要对选出的数据有限制筛选,用filter过滤也不错

var arr = [1,2,3,4,5,4,3,2,1];
var filterResult = arr.filter(function(item,index,array){
  return (item>2);
});
console.log(filterResult);  
//[3,4,5,4,3],返回所有数值都大于2的一个数组

相关讨论

如果想了解更多细节,可以看看GitHub上的issue

如何保存用户的复选框问题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
兼容FF和IE的动态table示例自写
Oct 21 Javascript
鼠标滚轮改变图片大小的示例代码
Nov 20 Javascript
JS获取计算机mac地址以及IP的实现方法
Jan 08 Javascript
js+css实现上下翻页相册代码分享
Aug 18 Javascript
JavaScript判断FileUpload控件上传文件类型
Sep 28 Javascript
jquery实现简易的移动端验证表单
Nov 08 Javascript
vue指令以及dom操作详解
Mar 04 Javascript
JavaScript瀑布流布局实现代码
May 06 Javascript
详谈js中标准for循环与foreach(for in)的区别
Nov 02 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
element ui table 增加筛选的方法示例
Nov 02 Javascript
介绍一下28个JS常用数组方法
May 06 Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 #Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 #Javascript
js实现带进度条提示的多视频上传功能
Dec 13 #Javascript
基于javaScript的this指向总结
Jul 22 #Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
Jul 22 #jQuery
基于LayUI实现前端分页功能的方法
Jul 22 #Javascript
浅谈原型对象的常用开发模式
Jul 22 #Javascript
You might like
thinkphp循环结构用法实例
2014/11/24 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
jquery tools之tooltip
2009/07/25 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
python sqlite的Row对象操作示例
2019/09/11 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
小学生植树节活动总结
2014/07/04 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
法定授权委托证明书
2015/06/18 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
导游词之青岛崂山
2019/12/27 职场文书
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript