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 相关文章推荐
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
Mar 06 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
Jun 27 Javascript
Javascript改变CSS样式(局部和全局)
Dec 18 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
Nov 30 Javascript
JS & JQuery 动态添加 select option
Jun 08 Javascript
ES6新特征数字、数组、字符串
Oct 01 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 jQuery
Vue中使用matomo进行访问流量统计的实现
Nov 05 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
Feb 13 Javascript
JS中多层次排序算法的实现代码
Jan 06 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
浅谈php的优缺点
2015/07/14 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
python修改注册表终止360进程实例
2014/10/13 Python
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
python3.4爬虫demo
2019/01/22 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Python实现中值滤波去噪方式
2019/12/18 Python
用python制作个视频下载器
2021/02/01 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
美国温暖商店:The Warming Store
2018/12/15 全球购物
外企测试工程师面试题
2015/02/01 面试题
电子商务专业推荐信范文
2013/12/02 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
医生辞职信范文
2015/03/02 职场文书
结婚仪式主持词
2015/06/29 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python