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 相关文章推荐
autoPlay 基于jquery的图片自动播放效果
Dec 07 Javascript
JS 获取select(多选下拉)中所选值的示例代码
Aug 02 Javascript
freemarker判断对象是否为空的方法
Aug 13 Javascript
ionic 上拉菜单(ActionSheet)实例代码
Jun 06 Javascript
ES6所改良的javascript“缺陷”问题
Aug 23 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
Sep 21 Javascript
js遮罩效果制作弹出注册界面效果
Jan 25 Javascript
js以及jquery实现手风琴效果
Apr 17 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
微信小程序ibeacon三点定位详解
Oct 31 Javascript
JavaScript变速动画函数封装添加任意多个属性
Apr 03 Javascript
vue路由传参页面刷新参数丢失问题解决方案
Oct 08 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
php 无极分类(递归)实现代码
2010/01/05 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
python反编译学习之字节码详解
2019/05/19 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
python 读取、写入txt文件的示例
2020/09/27 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
傲盾软件面试题
2015/08/17 面试题
遗嘱公证书标准样本
2014/04/08 职场文书
爱我中华演讲稿
2014/05/20 职场文书
数学教研活动总结
2014/07/02 职场文书
死亡证明书样本说明
2014/10/18 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
AJAX学习笔记
2021/05/18 Javascript
基于Python编写一个监控CPU的应用系统
2022/06/25 Python