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之可拖动的iframe效果代码
Aug 01 Javascript
再谈javascript图片预加载技术(详细演示)
Mar 12 Javascript
JavaScript中的面向对象介绍
Jun 30 Javascript
javascript测试题练习代码
Oct 10 Javascript
js实现纯前端的图片预览
Apr 27 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
使用vue编写一个点击数字计时小游戏
Aug 31 Javascript
JS扩展类,克隆对象与混合类实例分析
Nov 26 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 jQuery
Vue的Class与Style绑定的方法
Sep 01 Javascript
JS生成随机打乱数组的方法示例
Dec 23 Javascript
vue 数字翻牌器动态加载数据
Apr 20 Vue.js
关于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异常处理浅析
2015/05/12 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
Angular实现响应式表单
2017/08/04 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
java遇到微信小程序 "支付验证签名失败" 问题解决
2019/12/22 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
金融专业应届生求职信
2013/11/02 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
努力学习演讲稿
2014/05/10 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
关于运动会的广播稿
2014/09/22 职场文书
2016中秋节问候语
2015/11/11 职场文书
志愿服务心得体会
2016/01/15 职场文书
争做文明公民倡议书
2019/06/24 职场文书
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏