bootstrap table表格插件之服务器端分页实例代码
程序员文章站
2022-04-10 20:09:26
bootstrap table是基于bootstrap的轻量级表格插件,只需要简单的配置就可以实现强大的支持固定表头、单复选、排序、分页、搜索以及自定义表头等功能。
&n...
bootstrap table是基于bootstrap的轻量级表格插件,只需要简单的配置就可以实现强大的支持固定表头、单复选、排序、分页、搜索以及自定义表头等功能。
因公司的项目需要实现用户管理的表格实现,所以选用了bootstrap-table用于动态获取后台的用户数据显示到前台。
示例截图:
客户端代码:
//引入的css文件 <link href="../public/static/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet" /> <link href="../public/static/css/plugins/bootstrap-table/bootstrap-table.min.css" rel="external nofollow" rel="stylesheet"> //引入的js文件 <script src="../public/static/js/jquery.min.js"></script> <script src="../public/static/js/bootstrap.min.js"></script> <script src="../public/static/js/plugins/bootstrap-table/bootstrap-table.min.js"></script> <script src="../public/static/js/plugins/bootstrap-table/bootstrap-table-zh-cn.min.js"></script>
html文件代码
<div class="panel panel-default"> <div class="panel-heading"> 查询条件 </div> <div class="panel-body form-group" style="margin-bottom:0px;"> <label class="col-sm-1 control-label" style="text-align: right; margin-top:5px">姓名:</label> <div class="col-sm-2"> <input type="text" class="form-control" name="name" id="search_name"/> </div> <label class="col-sm-1 control-label" style="text-align: right; margin-top:5px">手机号:</label> <div class="col-sm-2"> <input type="text" class="form-control" name="name" id="search_tel"/> </div> <div class="col-sm-1 col-sm-offset-4"> <button class="btn btn-primary" id="search_btn">查询</button> </div> </div> </div> <table id="mytab" class="table table-hover"></table> <div id="toolbar" class="btn-group pull-right" style="margin-right: 20px;"> <button id="btn_edit" type="button" class="btn btn-default" style="display: none; border-radius: 0"> <span class="glyphicon glyphicon-pencil" aria-hidden="true" ></span>修改 </button> <button id="btn_delete" type="button" class="btn btn-default" style="display: none;"> <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>删除 </button> <button id="btn_add" type="button" class="btn btn-default"> <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>新增 </button> </div>
js文件代码:
//根据窗口调整表格高度 $(window).resize(function() { $('#mytab').bootstraptable('resetview', { height: tableheight() }) }) //生成用户数据 $('#mytab').bootstraptable({ method: 'post', contenttype: "application/x-www-form-urlencoded",//必须要有!!!! url:"../index.php/admin/index/usermanagement",//要请求数据的文件路径 height:tableheight(),//高度调整 toolbar: '#toolbar',//指定工具栏 striped: true, //是否显示行间隔色 datafield: "res",//bootstrap table 可以前端分页也可以后端分页,这里 //我们使用的是后端分页,后端分页时需返回含有total:总记录数,这个键值好像是固定的 //rows: 记录集合 键值可以修改 datafield 自己定义成自己想要的就好 pagenumber: 1, //初始化加载第一页,默认第一页 pagination:true,//是否分页 queryparamstype:'limit',//查询参数组织方式 queryparams:queryparams,//请求服务器时所传的参数 sidepagination:'server',//指定服务器端分页 pagesize:10,//单页记录数 pagelist:[5,10,20,30],//分页步进值 showrefresh:true,//刷新按钮 showcolumns:true, clicktoselect: true,//是否启用点击选中行 toolbaralign:'right',工具栏对齐方式 buttonsalign:'right',//按钮对齐方式 toolbar:'#toolbar',//指定工作栏 columns:[ { title:'全选', field:'select', //复选框 checkbox:true, width:25, align:'center', valign:'middle' }, { title:'id', field:'id', visible:false }, { title:'登录名', field:'loginname', sortable:true }, { title:'姓名', field:'name', sortable:true }, { title:'手机号', field:'tel', }, { title:'邮箱', field:'email' }, { title:'注册日期', field:'createtime', sortable:true }, { title:'状态', field:'attribute', align:'center', //列数据格式化 formatter:operateformatter } ], locale:'zh-cn',//中文支持, responsehandler:function(res){ //在ajax获取到数据,渲染表格之前,修改数据源 return res; } }) //三个参数,value代表该列的值 function operateformatter(value,row,index){ if(value==2){ return '<i class="fa fa-lock" style="color:red"></i>' }else if(value==1){ return '<i class="fa fa-unlock" style="color:green"></i>' }else{ return '数据错误' } } //请求服务数据时所传参数 function queryparams(params){ return{ //每页多少条数据 pagesize: params.limit, //请求第几页 pageindex:params.pagenumber, name:$('#search_name').val(), tel:$('#search_tel').val() } } //查询按钮事件 $('#search_btn').click(function(){ $('#mytab').bootstraptable('refresh', {url: '../index.php/admin/index/usermanagement'}); }) //tableheight函数 function tableheight(){ //可以根据自己页面情况进行调整 return $(window).height() -280; }
传入后台的数据:
后台传来的数据
只勾选一项,可以修改删除
勾选多项只能删除
开发过程中遇到的问题 (分页后重新搜素问题)
如果点击到第二页,我再搜索框中输入搜索条件,点击查询按钮,调用bootstrap table refresh()方法,pageindex会从第二页开始,应该改为第一页
网上大多数方法为 :
$(“#mytab”).bootstraptable(‘destroy');
先要将table销毁,否则会保留上次加载的内容
……//然后重新初使化表格,相当于重新创建。
因为感觉太过麻烦,所以找了很久终于找到了简单的解决方法
再点击查询按钮时
$(‘#mytab').bootstraptable(‘refreshoptions',{pagenumber:1,pagesize:10});//便可以了
代码地址:https://github.com/hanxue10180/bootstraptable
总结
以上所述是小编给大家介绍的bootstrap table表格插件之服务器端分页实例代码,希望对大家有所帮助
推荐阅读
-
AngularJS 与Bootstrap实现表格分页实例代码
-
bootstrap table表格客户端分页实例
-
表格展示利器 Bootstrap Table实例代码
-
基于Metronic的Bootstrap开发框架经验总结(18)-- 在代码生成工具Database2Sharp中集成对Bootstrap-table插件的分页及排序支持
-
bootstrap table表格插件之服务器端分页实例代码
-
使用vue和datatables进行表格的服务器端分页实例代码
-
AngularJS 与Bootstrap实现表格分页实例代码
-
bootstrap table表格客户端分页实例
-
深入了解Bootstrap table表格插件(二)前后端分页模糊查询
-
表格展示利器 Bootstrap Table实例代码