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 相关文章推荐
JS中的prototype与面向对象的实例讲解
May 22 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 Javascript
jquery动态加载js/css文件方法(自写小函数)
Oct 11 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
May 19 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
May 03 Javascript
vue.js评论发布信息可插入QQ表情功能
Aug 08 Javascript
详解node服务器中打开html文件的两种方法
Sep 18 Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
详解在vue-cli中使用graphql即vue-apollo的用法
Sep 08 Javascript
微信小程序wx:for循环的实例详解
Oct 07 Javascript
小程序实现页面顶部选项卡效果
Nov 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
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
PHP中的CMS的涵义
2007/03/11 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
Display SQL Server Version Information
2007/06/21 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
微信小程序删除处理详解
2017/08/16 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
校园奶茶店创业计划书
2014/01/23 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
预备党员转正考核材料
2014/06/03 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
法制教育观后感
2015/06/17 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
创业计划书之熟食店
2019/10/16 职场文书