1、Bootstrap-table使用

github:https://github.com/wenzhixin/bootstrap-table
官方文档:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/
bootstrap-table是一个基于bootstrap的表格插件,在使用上有点类似于easyui中的datagrid,但是样式上要比easyui美观一些,而且更加符合现代网站或者系统的前端要求。

不仅如此,bootstrap-table在使用中还有诸多独特之处:

自带前端搜索功能,还能定制搜索
前端列表详情展示,不仅仅是表格的形式
分页更加自由、更加多样化。可以根据不同的需求选择不同的分页方式。
bootstrap-table的使用通过查看官方文档就可掌握,现在主要记录bootstrap-table中独特的、强大的分页功能。

注意: 文中后台逻辑使用Node.js实现,数据库为mongodb

2、bootstrap-table中两种分页

bootstrap-table的分页方式是有bootstrap-table中sidePagination属性决定,此属性有两个值,client,server,分别代表前端分页和服务器后端分页。默认值为client 前端分页。

首先在页面中引入必须的插件包,如下:

<link rel="stylesheet" href="bootstrap.min.css" rel="external nofollow" >
<link rel="stylesheet" href="bootstrap-table.css" rel="external nofollow" >

<script src="jquery.min.js"></script>
<script src="bootstrap.min.js"></script>
<script src="bootstrap-table.js"></script>
<-- 本地化js -->
<script src="bootstrap-table-zh-CN.js"></script>

2.1 前端分页

前端页面代码如下:

$("#gridList").bootstrapTable({ 
      url:'/user/getUserList',//url获取数据 
      method:'get',//方法 
      cache:false,//缓存 
      pagination:true,//分页 
      sidePagination:'client',//指定在前端客户端分页 
      pageNumber:1,//页号 
      pageSize:10,//页面数据条数 
      pageList:[10,20,30,40,50],//分页列表 
      uniqueId:'_id',//唯一id 
      toolbar:'#toolbar',//工具栏 
      showColumns:true,//显示选择列 
      showRefresh:true,//显示刷新按钮 
      showToggle:true,//显示切换视图:列表和详情视图切换 
      search:true,//显示搜索框 
      columns:[ 
        {checkbox:true}, 
        {field:'user_no',title:'用户编码',width:'10%'}, 
        {field:'user_name',title:'用户姓名',width:'20%' 
        }, 
        {field:'user_sex',title:'用户性别',width:'8%',align:'center', 
          formatter:function(value,row,index){ 
            if(value == '1'){ 
              return '男'; 
            }else{ 
              return '女'; 
            } 
          }}, 
        {field:'user_account',title:'登录账号',width:'10%'}, 
        {field:'user_role',title:'所属角色',width:'10%'}, 
        {field:'user_sys',title:'所属系统',width:'10%'}, 
        {field:'create_time',title:'创建时间',width:'20%', 
          formatter:function(value,row,index){ 
            return dateTimeFormatter(value,'yyyy-MM-dd hh:mm:ss'); 
          } 
        } 
      ] 
    }); 

注意: 在前端页面分页中,sidePagination 必须设置为client

部分后台逻辑代码如下:

/******user_route.js*********/
/**
 * 获取用户列表
 */
router.get('/getUserList',function(req,res){
  userServices.getUserList(req,res,function(err,users){
    if(err){
      res.send({success:false,msg:err,data:null});
    }else{
      res.send({'success':true,'msg':"获取用户列表成功",'total':users.length,'data':users});
    }
  });
});

/*******user_services.js********/
/**
 * 获取用户列表
 * @param req
 * @param res
 * @param callback
 */
exports.getUserList = function(req,res,callback){
  userModel.$user.find(function(err,users){
    if(err){
      callback('获取用户列表失败!',null);
    }else{
      callback(null,users);
    }
  })
}

注意: 返回到前端的数据中,必须有 data 参数,bootstrap-table会根据返回的data参数,设置前端分页。data参数值须为一个数组,数组中包含返回的数据。

前端分页在数据较少的时候非常适用,可以减少浏览器请求数,数据库访问此数,从而提高系统性能。但是不适合非常庞大的万级数据量,返回的数据会放在内存中保存,庞大的数据量会消耗不少内存。

2.2 后端分页

前端页面js:

$("#gridList").bootstrapTable({
      url:'/user/getUserListPagination',//设置后台分页,必须设置URL获取数据,或是重写ajax方法
      method:'get',
      cache:false,
      pagination:true,
      sidePagination:'server',//设置为后台服务器分页
      pageNumber:1,
      pageSize:10,
      pageList:[10,20,30,40,50],
      queryParamsType:'',//请求参数类型,默认为`limit`,使用默认值不会向后台出入分页所需的页号,页数据数等必须值,所以需要设置为空串
      queryParams:function(params){//向后台传输参数。params为bootstrap-table的options.
        var param = {
          page:params.pageNumber,//获取页号
          size:params.pageSize//获取页面数据量大小
        }
        return param;
      },
      uniqueId:'_id',
      toolbar:'#toolbar',
      showColumns:true,
      showRefresh:true,
      showToggle:true,
      search:true,
      columns:[
        {checkbox:true},
        {field:'user_no',title:'用户编码',width:'10%'},
        {field:'user_name',title:'用户姓名',width:'20%'
        },
        {field:'user_sex',title:'用户性别',width:'8%',align:'center',
          formatter:function(value,row,index){
            if(value == '1'){
              return '男';
            }else{
              return '女';
            }
          }},
        {field:'user_account',title:'登录账号',width:'10%'},
        {field:'user_role',title:'所属角色',width:'10%'},
        {field:'user_sys',title:'所属系统',width:'10%'},
        {field:'create_time',title:'创建时间',width:'20%',
          formatter:function(value,row,index){
            return dateTimeFormatter(value,'yyyy-MM-dd hh:mm:ss');
          }
        }
      ]
    });

注意: 代码中注释不分为在后台分页中所必须设置的
后端逻辑代码:

/********user_route.js*******/
/**
 * 后台分页获取数据列表
 */
router.get('/getUserListPagination',function(req,res){
  var queryParams = req.query;
  var params= {
    page:queryParams.page,
    size:queryParams.size
  };
  userServices.getUserListPagination(params,function(err,users){//根据分页条件查询数据条数
    if(err){
      res.send({success:false,msg:err,data:null});
    }else{
      userServices.getUserList(req,res,function(err,allUsers){//查询所有数据总条数
        if(err){
          res.send({success:false,msg:err,data:null});
        }else{
          res.send({'success':true,'msg':"获取用户列表成功",'total':allUsers.length,'rows':users});
        }
      });
    }
  });
});

/**********user_services.js********/
/**
 * 分页查询
 * @param params
 * @param callback
 */
exports.getUserListPagination = function(params,callback){

  var index = (params.page-1)*params.size;//设置分页起点下标
  var size = parseInt(params.size);
  //设置分页条件
  var query = userModel.$user.find({});
  query.limit(size);//条数
  query.skip(index);//下标

  //执行查询
  query.exec(function(err,users){
    callback(err,users);
  });
}

注意: 选择后台分页,返回到前台的数据必须包含 total rows 两个参数,total为数据总数;rows为返回的数据数,也是一个数组对象

Node.js中Bootstrap-table的两种分页的实现方法的更多相关文章

  1. ios – UIScrollView的平滑自定义分页

    我在UIScrollView中有两个(可能更多)视图,并希望使用分页.当我尝试使用UIScrollView的默认分页选项时出现问题,因为视图具有不同的宽度,无法正确分页.所以我已经实现了一个有效的自定义分页代码.但是,当滚动较慢时,它不会按预期运行.(它回到没有动画的原始位置.)以下是我目前通过uiscrollviewdelegate进行自定义分页的方法我想要的是:是)我有的:解决方法尝试下面的自

  2. ios – 使用子视图控制器分页滚动视图

    使用分页实现水平滚动视图的最佳做法是什么,每页有一个视图控制器?由于iOS5具有用于视图控制器容器/包含的API,因此PageControl示例仍然是实现此功能的最佳方式吗?

  3. 可可触摸 – 启用预览和分页的UICollectionView

    在AppStore中显示搜索结果时,我正在尝试模仿苹果公司的功能.(参考:http://searchengineland.com/apple-app-search-shows-only-one-result-at-a-time-133818)它显示像卡中的详细应用程序信息,并且它被分页.当中间的一个活动卡片和滚动视图的分页行为仍然完整时,我被困在如何使上一张和第二张卡片显示.我已经尝试使用UICo

  4. ios – 启用了内容插入的UIScrollView分页工作很奇怪

    我创建了具有内容插入的UIScrollView.第一次,scrollView.contentOffset.x为-160.0但是奇怪的问题是当我点击scrollView(黄色区域)时,内容偏移x值将重置为0并显示为这样.我尝试过几次,但是点击滚动视图会将内容偏移量重置为0.我该如何防止这种情况?解决方法UIScrollView分页通过滚动与scrollView宽度相同的页面(在您的情况下为480个宽

  5. UIKit框架-高级控件Swift版本: 10.UIWebView方法/属性详解

    前面我们已经讲解完了UINavigationController的一些常用属性以及方法,现在让我们来看看一个关于网络的UIWebView.1.UIWebView的常用属性常用类型2.UIWebView的代理方法3.代码示范首先我们要使用storyBoard布局界面关联控件遵守代理协议自定义UIWebVIew实现代理方法在ViewDidLoad方法中实现PS:UIWebView继承与UIView,并

  6. swift+storyboard+UIImageview入门

    更新记录:该Storyboard教程由CarolineBegbie更新iOS8和Swift相关内容。Storyboard是最先在iOS5引入的一项振奋人心的特性,大幅缩减构建App用户界面所需的时间。要介绍Storyboard是什么,我打算从这张图讲起。这就是使用Storyboard的力量。Storyboard通过新的原型表项和静态表项特性,让处理表视图的工作更加轻松。Storyboard使自动布局更易用。接下来我们看一下Storyboard,点击项目浏览器中的Main.storyboard就可以在Int

  7. 使用RxSwift进行分页API调用

    如何实现这一点的任何建议将非常感谢…

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. Node.js调试技术总结分享

    Node.js是一个可以快速构建网络服务及应用的平台。该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。 今天介绍Node.js调式目前有几种技术,需要的朋友可以参考下。

随机推荐

  1. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  2. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  3. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  4. nodejs模块学习之connect解析

    这篇文章主要介绍了nodejs模块学习之connect解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  6. 详解koa2学习中使用 async 、await、promise解决异步的问题

    这篇文章主要介绍了详解koa2学习中使用 async 、await、promise解决异步的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    这篇文章主要介绍了Node.js编写爬虫的基本思路及抓取百度图片的实例分享,其中作者提到了需要特别注意GBK转码的转码问题,需要的朋友可以参考下

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. node下使用UglifyJS压缩合并JS文件的方法

    下面小编就为大家分享一篇node下使用UglifyJS压缩合并JS文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

返回
顶部