bootStrap-table服务器端后台分页及自定义搜索框怎么实现
创始人
2024-12-17 06:01:28
0次

首先下载BootStrap-table的js和CSS

下载地址:https://github.com/wenzhixin/bootstrap-table.git

下载完后解压

把bootstrap-table.js、bootstrap-table-zh-CN.js、bootstrap-table.css复制到项目中

在jsp中引入js和css

其他bootstrap相关文件和jQuery相关文件自行引入即可

先上一段jsp中代码

                                                                                                
                                                             搜索                                    
            
            
    

再看js代码

$(document).ready(function () {  //调用函数,初始化表格    initTable();  //当点击查询按钮的时候执行,bootstrap-table前端分页是不能使用搜索功能,所以可以提取出来自定义搜索。后台代码,在后面给出    $("#queryBtn").bind("click", initTable);});function initTable() {    //先销毁表格    $('#myTable').bootstrapTable('destroy');    $('#myTable').bootstrapTable({        url: "showConsumeRecordlList",//请求后台的URL(*)        method: 'get',        dataType: "json",        dataField: 'rows',        striped: true,//设置为 true 会有隔行变色效果        undefinedText: "空",//当数据为 undefined 时显示的字符        pagination: true, //设置为 true 会在表格底部显示分页条。        showToggle: "true",//是否显示 切换试图(table/card)按钮        showColumns: "true",//是否显示 内容列下拉框        pageNumber: 1,//初始化加载第一页,默认第一页        pageSize: 10,//每页的记录行数(*)        pageList: [10, 20, 30, 40],//可供选择的每页的行数(*),当记录条数大于最小可选择条数时才会出现        paginationPreText: '上一页',        paginationNextText: '下一页',        search: false, //是否显示表格搜索,bootstrap-table服务器分页不能使用搜索功能,可以自定义搜索框,上面jsp中已经给出,操作方法也已经给出        striped : true,//隔行变色        showColumns: false,//是否显示 内容列下拉框        showToggle: false, //是否显示详细视图和列表视图的切换按钮        clickToSelect: true,  //是否启用点击选中行        data_local: "zh-US",//表格汉化        sidePagination: "server", //服务端处理分页        queryParamsType : "limit",//设置为 ‘limit’ 则会发送符合 RESTFul 格式的参数.        queryParams: function (params) {//自定义参数,这里的参数是传给后台的,我这是是分页用的//            请求服务器数据时,你可以通过重写参数的方式添加一些额外的参数,例如 toolbar 中的参数 如果//       queryParamsType = 'limit' ,返回参数必须包含limit, offset, search, sort, order //            queryParamsType = 'undefined', 返回参数必须包含: pageSize, pageNumber, searchText, sortName, sortOrder. //            返回false将会终止请求。            return {//这里的params是table提供的                offset: params.offset,//从数据库第几条记录开始                limit: params.limit,//找多少条                memberId: $("#searchString_id").val() //这个就是搜索框中的内容,可以自动传到后台,搜索实现在xml中体现            };        },        responseHandler: function (res) {      //如果后台返回的json格式不是{rows:[{...},{...}],total:100},可以在这块处理成这样的格式      return res;        },        columns: [{            field: 'xuhao',            title: '序号',            formatter: idFormatter        }, {            field: 'memberId',            title: '会员卡号',        }, {            field: 'name',            title: '会员姓名'        }, {            field: 'payTime',            title: '缴费时间',            formatter: timeFormatter        }, {            field: 'payNo',            title: '缴费单号'        }, {            field: 'payEntry',            title: '收款条目',            formatter: payEntryFormatter        }, {            field: 'cardType',            title: '卡种',            formatter: cardTypeFormatter        }, {            field: 'payMoney',            title: '缴费金额'        }, {            field: 'operate',            title: '缴费详情',            formatter: operateFormatter        } ],        onLoadSuccess: function () {        },        onLoadError: function () {            showTips("数据加载失败!");        }    });}function idFormatter(value, row, index){    return index+1;}function timeFormatter(value, row, index) {    if (value != null) {        var date = new Date(dateTime);        var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;        var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();        var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();        var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();        var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();        return date.getFullYear() + "-" + month + "-" + currentDate + " " + hours + ":" + minutes + ":" + seconds;    }}function payEntryFormatter(value, row, index){    switch(row.payEntry){    case '1':        value='缴费种类1';        break;    case '2':        value='缴费种类2';        break;    case '3':        value='缴费种类3';        break;    default:        value='其他';        break;    }    return value;}function cardTypeFormatter(value, row, index) {    switch(row.cardType){    case '1':        value='卡种1';        break;    case '2':        value='卡种2';        break;    case '3':        value='卡种3';        break;    default:        value='其他';        break;    }    return value;}function operateFormatter(value, row, index) {      return '查看';}

前段准备就绪,开始服务器代码

准备分页实体

package com.gym.utils;public class Page {    // 每页显示数量    private int limit;    // 页码    private int page;    // sql语句起始索引    private int offset;    // setter and getter....}

准备展示实体

import java.util.Date;import com.gym.utils.Page;public class ConsumeRecord extends Page {    private Integer id;    private Integer memberId;    private String months;    private Long payMoney;    private Date payTime;    private String payStatus;    private String payEntry;    private String remark;    private String name;    private String cardType;    private Date endTime;    private Date registerTime;    private String payNo;    // setter and getter...}

再来一个分页帮助类

import java.util.ArrayList;import java.util.List;public class PageHelper {    // 注意:这两个属性名称不能改变,是定死的    // 实体类集合    private List rows = new ArrayList();    // 数据总条数    private int total;    // setter and getter...}

编写Controller

/**     * 展示缴费详情列表     *      * @param modelMap     * @return     */    @RequestMapping("/showConsumeRecordlListA")    @ResponseBody    public String showConsumeRecordlListA(ConsumeRecord consumeRecord, HttpServletRequest request) {        PageHelper pageHelper = new PageHelper();        // 统计总记录数        Integer total = consumerRecordService.getTotal(consumeRecord);        pageHelper.setTotal(total);        // 查询当前页实体对象        List list = consumerRecordService.getConsumerRecordListPage(consumeRecord);        pageHelper.setRows(list);        return new GsonBuilder().serializeNulls().create().toJson(pageHelper);    }

经过Service层,这块就不粘贴了,直接到达mapper

import java.util.List;import com.entity.ConsumeRecord;public interface ConsumeRecordMapper {    ...    ...    /**     * 获取消费记录条数     *      * @param consumeRecord     * @return     */    Integer getTotal(ConsumeRecord consumeRecord);    /**     * 分页查询消费记录集合     *      * @param consumeRecord     * @return     */    List getConsumerRecordListPage(ConsumeRecord consumeRecord);}

然后mapper.xml

            SELECT count(1) FROM consume_record where 1=1                      and member_id=#{memberId}                               SELECT * FROM consume_record  where 1=1                      and member_id=#{memberId}                     ORDER BY pay_time DESC        LIMIT #{offset},#{limit}    

这是bootstrap-table官方文档,主要解释参数的意思,可根据文档按照自己的需求更改代码

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...