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 相关文章推荐
dojo随手记 gird组件引用
Feb 24 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
Dec 30 Javascript
JavaScript判断textarea值是否为空并给出相应提示
Sep 04 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
Aug 04 Javascript
AngularJS手动表单验证
Feb 01 Javascript
JS中对象与字符串的互相转换详解
May 20 Javascript
js实现div模拟模态对话框展现URL内容
May 27 Javascript
移动开发之自适应手机屏幕宽度
Nov 23 Javascript
如何提高Dom访问速度
Jan 05 Javascript
JS严格模式知识点总结
Feb 27 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
Jan 16 Javascript
Vue 数据响应式相关总结
Jan 28 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函数解决SQL injection
2006/10/09 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
javascript radio 联动效果
2009/03/04 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
JavaScript中Function函数与Object对象的关系
2015/12/17 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
python+django快速实现文件上传
2016/10/24 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
python适合人工智能的理由和优势
2019/06/28 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
python障碍式期权定价公式
2019/07/19 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
如何基于Python创建目录文件夹
2019/12/31 Python
Python class的继承方法代码实例
2020/02/14 Python
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
应聘医学检验人员自荐信
2013/09/27 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
学校通报表扬范文
2015/05/04 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python