bootstrap实现分页功能

15 篇文章 0 订阅
3 篇文章 0 订阅

功能其实很简单,主要细心就可以了。先上效果图,有点简陋,但是功能No problem!!

实现这个功能需要一下几个步骤

第一步:引入boostrap插件(https://v3.bootcss.com/getting-started/#download 有可能不全自己找)

这是需要引入的必须要的js及css

第二步:整理写js,下面写的够仔细,用的话直接复制

<script>
	$(function(){
		$('#table').bootstrapTable({
            url: 'queryAll', //接口名称
            method: 'post',
            contentType:"application/x-www-form-urlencoded",//method为post时必须加上这个,否则接收不到参数
            dataType: 'json',
            queryParams:function queryParams(params) {   //设置查询参数
 
                var param = {
 
                    pageSize: params.limit,   //每页多少条数据
                    pageNumber: params.offset, //从第几条数据开始
                    searchText: params.search  //搜索框
                };
                //alert("pageSize="+params.limit+"pageNumber="+params.offset+"searchText="+searchText);
                return param;
            },
            height: 560,
            toolbar: '#toolbar',                //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            pagination: true,                   //是否显示分页(*)
            maintainSelected: true,             //设置为 true 在点击分页按钮或搜索按钮时,将记住checkbox的选择项
            sidePagination: "server",          //分页方式:client客户端分页,server服务端分页(*)
            pageNumber: 1,                       //初始化加载第一页,默认第一页
            pageSize: 10,                       //每页的记录行数(*)
            pageList: [5, 10, 25, 50, 100],        //可供选择的每页的行数(*)
            search: true,                       //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
            strictSearch: true,                //设置为 true启用 全匹配搜索,否则为模糊搜索
            showRefresh: true,                  //是否显示刷新按钮
            minimumCountColumns: 2,             //最少允许的列数
            clickToSelect: true,                //是否启用点击选中行
            uniqueId: "drugs_id",                  //每一行的唯一标识,一般为主键列\
            sortStable: true,
            columns: [
                {checkbox: true},
                {field: 'drugs_id', title: '药品编码'},
                {field: 'drugs_name', title: '药品名称'},
                {field: 'pro_num', title: '生产批号'},
                {field: 'factory', title: '生产厂家'},
                {field: 'ha_level', title: '危险级别'},
                {field: 'pack', title: '包装'},
                {field: 'birthday', title: '药品种类'
                /*   日期用  formatter: function (row,index,value) {
                        if (value != null) {
                            var date = new Date(value);
                            return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
                        }
                    } */
                    },
                {field: 'ji_xi', title: '剂型'},
                {field: 'max_dose', title: '最大剂量(mg)'}
            ]
        });
	});
</script>

第三步:当然是写接口  Controller层

 

@RequestMapping("/queryAll")
    @ResponseBody
    public Map<String, Object> queryAll(Integer pageSize, Integer pageNumber, String searchText, HttpServletRequest request,
                           HttpServletResponse response) throws  Exception{
        //搜索框功能 暂不实现
        if (null != searchText) {
            searchText = "'%"+searchText+"%'";//模糊查询
        }else{
            searchText = "'%"+""+"%'";//模糊查询
        }
        //在service通过条件查询获取指定页的数据的list
        List<Drug> list = drugService.queryAll(pageSize, pageNumber, searchText);
        System.out.println(list.size());
        //根据查询条件,获取符合查询条件的数据总量
        Integer total = drugService.pageCount(searchText);
        //System.out.println(total);
        //自己封装的数据返回类型,bootstrap-table要求服务器返回的json数据必须包含:totlal,rows两个节点(sidePagination: "server"服务端分页)
        Map<String, Object> maps = new HashMap<>();
        maps.put("rows",list);
        maps.put("total",total);
        //System.out.println(maps.size());
        return maps;
	}

 mapper层

<select id="pageCount" resultType="int" parameterType="string">
	  select count(1) from drugs_info d 
	 <!--  <if test="searchText!=''">
	   where d.drugs_name like '%+searchText+%'
	   </if> -->
	</select>
 <select id="queryAll" resultType="com.wandu.webmanagement.data.entity.drug.Drug">
        SELECT
		 d.*
		FROM
		drugs_info d 
 
		limit #{startIndex},#{pageSize}
</select>

重要代码其实就这么多,你得细细品,细细品。

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.org.controller; import java.io.PrintWriter; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONException; import org.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.org.BaseController; import com.org.model.User; import com.org.service.IUserService; /** * @Author:liangjilong * @Date:2014-2-25 * @Version:1.0 * @Description: */ @Controller public class UserController extends BaseController { @Resource private IUserService userService; /*** * 方法一请求使用String * * 请求@RequestMapping匹配的URL request * * @param response * @return * @throws Exception */ @RequestMapping(value = "/userList1.do") public String userList1(HttpServletRequest request, HttpServletResponse response) throws Exception { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); List<User> lists = userService.getUserList(); if (lists != null) { request.setAttribute("userList", lists); } // userList指跳转到userList.jsp页面 return "userList"; } /** * 方法二请求使用ModelAndView * * @param request * @param response * @return * @throws Exception */ @RequestMapping(value = "/userList2.do") public ModelAndView userList2(HttpServletRequest request, HttpServletResponse response) throws Exception { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); List<User> lists = userService.getUserList(); if (lists != null) { request.setAttribute("userList", lists); } // userList指跳转到userList.jsp页面 return new ModelAndView("userList"); } /*** * 自定义标签实现分页 * * @param request * @param response * @param @ResponseBody ajax响应 * @param method={RequestMethod.POST,RequestMethod.GET}表单请求 * @param consumes="application/json; charset=UTF-8"请求格式是json * @return * @throws UnsupportedEncodingException * @throws Exception */ @RequestMapping(value = "/pageList.do" ,method={RequestMethod.POST,RequestMethod.GET}) public @ResponseBody ModelAndView getUserInfo(Model model, @RequestParam(required = false) String username, @RequestParam(required = false) Integer pageNum, @RequestParam(required = false) Integer pageSize) { try { String userName = new String(username.getBytes("ISO-8859-1"),"UTF-8");//处理乱码 Map<String, Object> map = new HashMap<String, Object>(); username=(username==null)?"":username; map.put("username", username);//username必须要和ibatis配置的property=username一致 Integer totalCount = this.userService.getUserCount(map); this.initPage(map, pageNum, pageSize, totalCount); List list = this.userService.getUserLists(map); this.initResult(model, list, map); return new ModelAndView("pagerList"); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 添加用户 * @param type * @param model * @return */ @RequestMapping("/addUser.do") public ModelAndView addUser(@RequestParam String username, Model model) { User user = new User(); user.setUsername(username); this.userService.addUser(user); return this.getUserInfo(model, null, null, null); } /*** * 删除用户 * @param id * @param pageNum * @param pageSize * @param model * @return */ @RequestMapping(value="/delUser.do",method={RequestMethod.POST,RequestMethod.GET},consumes="application/json; charset=UTF-8") @ResponseBody public ModelAndView delUser(@RequestParam(required = true) Integer id, @RequestParam(required = false) Integer pageNum, @RequestParam(required = false) Integer pageSize, Model model, HttpServletRequest request,HttpServletResponse response) { PrintWriter out=null; JSONObject result=new JSONObject(); try { out=response.getWriter(); this.userService.delUserById(id); result.put("flag", true); out.write(result.toString()); } catch (Exception e) { try { result.put("flag", false); out.write(result.toString()); } catch (JSONException e1) { e1.printStackTrace(); } } return null; //return this.getUserInfo(model, null, pageNum, pageSize); } /*** * 编辑用户 * @param id * @param model * @return */ @RequestMapping("/getUserById.do") public ModelAndView getUserById(@RequestParam(required = true) Integer id, Model model) { User u = this.userService.getUserById(id); model.addAttribute("user", u); return new ModelAndView("editUser"); } /*** * 编辑用户 * @param id * @param model * @return */ @RequestMapping("/editUser.do") public ModelAndView editUser(@RequestParam(required = true) Integer id, @RequestParam String username, @RequestParam(required = false) Integer pageNum, @RequestParam(required = false) Integer pageSize, Model model) { User u = new User(); u.setUsername(username); this.userService.editUser(u); return this.getUserInfo(model, null, pageNum, pageNum); } }
Bootstrap 的分页组件非常易于使用,可以方便地实现分页功能。以下是实现分页的简单步骤: 1. 在 HTML 中添加分页组件的基本结构: ```html <nav aria-label="Page navigation"> <ul class="pagination"> <li class="page-item"> <a class="page-link" href="#" aria-label="Previous"> <span aria-hidden="true">«</span> </a> </li> <li class="page-item"><a class="page-link" href="#">1</a></li> <li class="page-item"><a class="page-link" href="#">2</a></li> <li class="page-item"><a class="page-link" href="#">3</a></li> <li class="page-item"> <a class="page-link" href="#" aria-label="Next"> <span aria-hidden="true">»</span> </a> </li> </ul> </nav> ``` 2. 在 JavaScript 中添加分页功能: ```javascript // 获取分页组件 var pagination = document.querySelector('.pagination'); // 获取所有页码链接 var pageLinks = pagination.querySelectorAll('a.page-link'); // 给每个页码链接添加点击事件 pageLinks.forEach(function(pageLink) { pageLink.addEventListener('click', function(e) { e.preventDefault(); // 阻止链接默认跳转行为 var pageNum = parseInt(this.innerHTML); // 获取点击的页码 // TODO: 根据页码获取相应数据并更新页面内容 }); }); // 获取“上一页”和“下一页”链接 var prevLink = pagination.querySelector('a[aria-label="Previous"]'); var nextLink = pagination.querySelector('a[aria-label="Next"]'); // 给“上一页”和“下一页”链接添加点击事件 prevLink.addEventListener('click', function(e) { e.preventDefault(); // 阻止链接默认跳转行为 var pageNum = parseInt(pagination.querySelector('.active').querySelector('a').innerHTML); // 获取当前页码 pageNum--; // 上一页页码 if (pageNum < 1) { pageNum = 1; // 页码不能小于 1 } // TODO: 根据页码获取相应数据并更新页面内容 }); nextLink.addEventListener('click', function(e) { e.preventDefault(); // 阻止链接默认跳转行为 var pageNum = parseInt(pagination.querySelector('.active').querySelector('a').innerHTML); // 获取当前页码 pageNum++; // 下一页页码 if (pageNum > pageLinks.length) { pageNum = pageLinks.length; // 页码不能大于总页数 } // TODO: 根据页码获取相应数据并更新页面内容 }); // 默认选中第一页 pageLinks[0].parentNode.classList.add('active'); ``` 以上代码只是一个简单的示例,具体实现还需要根据具体需求进行相应修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值