热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于Bootstrap的表格插件bootstraptable

写在前面:表格在项目中是使用比较多的,bootstrap-table插件也是非常好用,而且表格页面也比较好看。这里也简单的记录下。下面直接看demo吧,代码中都注释了,有些用法,这

写在前面:

  表格在项目中是使用比较多的,bootstrap-table插件也是非常好用,而且表格页面也比较好看。这里也简单的记录下。

  下面直接看demo吧,代码中都注释了,有些用法,这里没有用到,需要用到的可以在网上查查。例子有很多的。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
  String scheme = request.getScheme();
  String serverName = request.getServerName();
  String contextPath = request.getContextPath();
  int port = request.getServerPort();
  //网站的访问跟路径
  String baseURL = scheme + "://" + serverName + ":" + port
          + contextPath;
  request.setAttribute("baseURL", baseURL);
  System.out.println("baseURL:" + baseURL);
%>
<html>
  <head>
    <meta name="viewport" content=" />
    <title>bootstrap-select测试title>
    <%--导入bootstrap与table样式--%>
    <link rel="stylesheet" type="text/css" href="${baseURL}/Bootstrap/bootstrap/css/bootstrap.min.css" />
    <link href="${baseURL}/Bootstrap/bootstrap-table/bootstrap-table.css" rel="stylesheet" />
    <%--先导入jqury插件--%>
    <script src="${baseURL}/Bootstrap/bootstrap/assets/js/jquery-1.10.2.min.js">script>
    <%--导入bootstrap插件--%>
    <script src="${baseURL}/Bootstrap/bootstrap/assets/js/bootstrap.min.js">script>
    <%--table插件--%>
    <script src="${baseURL}/Bootstrap/bootstrap-table/bootstrap-table.js">script>

    <style type="text/css">
      /*解决设置表头列宽无效*/
      #table{
        table-layout: fixed;
      }
      /*给表格边框加颜色*/
      table,table tr th, table tr td {
        border:1px solid #fac090;
      }
    style>
  head>
  <body>
    <div style="">
      <%--给table一个id--%>
      <table id="mytable">table>
    div>
  body>
<script>
    $(function(){
        //初始化Table
        var personTable = $('#mytable').bootstrapTable({
            url: '${baseURL}/listAllSAPerson',//请求后台的URL(*)
            method: 'get',//请求方式(*)
            dataType: "json", //服务器返回的数据类型
            toolbar: '#toolbar',//工具按钮用哪个容器
            striped: true,//是否显示行间隔色
            sidePagination: "server",//分页方式:client客户端分页,server服务端分页(*)
            pageNumber: 1,//初始化加载第一页,默认第一页  设置了分页首页页码
            pageSize: 4,//每页的记录行数(*)
            pageList: [2, 4, 6, 8],//可供选择的每页的行数(*)
            showPaginationSwitch:false,//是否显示数据条数选择框
            cache: false,//是否使用缓存 ,默认为true,所以一般情况下需要设置一下这个属性(*)
            pagination: true,//是否显示分页(*)
            sortable: true,//是否启用排序
            sortName: "perCode", //按照perCode排序
            sortOrder: "asc",//排序方式
            queryParams: function (params) {//自定义参数,这里的参数是传给后台的,我这里是分页用的
                return {//这里的params是table提供的
                      startIndex: params.offset,//从数据库第几条记录开始,使用offset后台分页查询时不用再减去1
                      pageSize: params.limit//每页记录数
                      //后台要用名字相同的变量来接收比如,这里后台要用startIndex,pageSize两个变量来分别进行接收
                    };
            },//传递参数(*)
            // search: true,//是否显示表格搜索,此搜索是客户端搜索,不会进服务端
            contentType: "application/x-www-form-urlencoded",
            strictSearch: true,
            //showColumns: true,//是否显示内容列下拉框
            //showRefresh: true,//是否显示刷新按钮
            minimumCountColumns: 2,//最少允许的列数
            clickToSelect: true,//是否启用点击选中行
            //height: 700,//行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
            //width:'50%',
            uniqueId: "perCode",//每一行的唯一标识,一般为主键列
            //showToggle: true,//是否显示详细视图和列表视图的切换按钮
            cardView: false,//是否显示详细视图
            detailView: false,//是否显示父子表
            checkboxHeader :false, //隐藏表头的checkbox
            singleSelect: true, //开启单选
            columns: [
                {
                    checkbox:true //每一行前面是否开启checkbox
                },
                {
                    field: 'perCode',
                    title: 'ID',
                    valign:'middle',
                    align:'center',
                    visible:true,  //隐藏
                    width:'100px', //解决设置表头列宽无效样式后 这里的width才会生效
                    //colspan:2,
                    //设置列样式
                    /*cellStyle:{
                        css:{"background-color":"#fac090"}
                    }*/
                },
                {
                    field: 'perName',
                    title: 'Name',
                    align:'center',
                    width:'100px'
                },
                {
                    field: 'role',
                    title: 'Role',
                    align:'center',
                    width:'100px'
                },
                {
                    field: 'stateName',
                    title: 'Status',
                    align:'center',
                    width:'100px'
                }
            ],
            //设置行样式
            rowStyle: function (row, index) {
                //根据获取perCode来判断是否删除了 来显示删除线样式
                if (row.perCode == "W01"){
                    //设置为删除样式 根据自己的项目需求来
                    return {css:{"text-decoration":"line-through","color":"red"}}
                }else{
                    return {css:{"background-color":"white"}}
                }
                //这里也可设置行间隔色
                /*if(index % 2 == 0){
                    return {css:{"background-color":"greed"}}
                }else{
                    return {css:{"background-color":"yellow"}}
                }
              */
            },
        });
    });
script>
html>

  这样一个table就出来了,下面是它的效果图:

基于Bootstrap的表格插件bootstrap-table

  用法也还是很方便简单的,对于每一行的颜色,或者每一列的颜色,也可以自己去修改设置。对于表格一般都会涉及到分页,分页传递的参数在queryParams中进行设置,在代码中也做了例子,参照代码就可以了。

  除了使用分页外,有时候会带条件查询表格,那么这个时候就需要将需要查询的参数加入到queryParams中,然后传到后台了,比较常见的用法是表单条件查询,下面是代码:

     queryParams: function (params) {//自定义参数,这里的参数是传给后台的,我这里是分页用的
                //如果是条件查询 这里要带上查询条件 不然 点击下一页不会带条件查询
                var p = serializeForm($("#header_form")) || {};
                p.startIndex = params.offset,//从数据库第几条记录开始
                p.pageSize = params.limit//每页记录数
                return p;
            },//传递参数(*)
    //序列化表单
        function serializeForm(form){
            var obj = {};
            $.each(form.serializeArray(),function(index){
                if(obj[this['name']]){
                    obj[this['name']] = obj[this['name']] + ','+this['value'];
                } else {
                    obj[this['name']] =this['value'];
                }
            });
            return obj;
        }

  好了,分页带条件注意的就是这么多了,感觉写起来也没多少要注意的,对了,对于后台返回对应的json格式的数据,

    Map map = new HashMap<>();
        map.put("rows",voList);
        map.put("total",totalCount);
        JsonConfig jsonConfig=new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class,new JsonDateValueProcessor());
        jsonObject = JSONObject.fromObject(map, jsonConfig);

  这里需要的是rows与total、都是小写的,不要写成了大写,具体的数据的返回,这里就不多做代码展示了,之前写ligerUI中都有对应的代码介绍,这里虽然使用的是bootstrap,但是由于传递json数据给前台页面的方法都是一致的,就不再重复多说了。

  当需要重新加载表格的时候,也可以使用这种方式

//$("#table").bootstrapTable("refresh",{ url: "${baseURL}/listAllDemo","query":{"id":"333"}}); //单个条件查询
//表单条件查询 还是先序列化表单
var queryData = serializeForm($("#header_form"));;
$("#table").bootstrapTable("refresh",{ url: "${baseURL}/listAllSAPerson","query":queryData});

  

  

  


推荐阅读
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了解决IE678伪类不兼容问题的方法,包括少用CSS3和HTML5独有的属性,使用CSS hacker,使用last-child清除浮动、批量添加标签、去掉list item最后一个的border-right等技巧。同时还介绍了使用after清除浮动时加上IE独有属性zoom:1的处理方法。另外,本文还提到可以使用jQuery代替批量添加标签的功能,以及使用负边距和CSS2选择器element+element去掉list item最后一个的border-right的方法。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
author-avatar
w3shuajiang2
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有