Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1060|回复: 2

[默认分类] Bootstrap Table使用分享

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-24 13:33:05 | 显示全部楼层 |阅读模式

    1. 版权声明:本文为博主原创文章,未经博主允许不得转载。
    复制代码


    最近客户提出需求,想将原有的管理系统,做下优化,通过手机也能很好展现,想到2个方案:
    a方案:保留原有的页面,新设计一套适合手机的页面,当手机访问时,进入m.zhy.com(手机页面),pc设备访问时,进入www.zhy.com(pc页面)
    b方案:采用bootstrap框架,替换原有页面,自动适应手机、平板、PC 设备
    采用a方案,需要设计一套界面,并且要得重新写适合页面的接口,考虑到时间及成本问题,故项目采用了b方案
    一、效果展示

    二、BootStrap table简单介绍

    1. bootStrap table 是一个轻量级的table插件,使用AJAX获取JSON格式的数据,其分页和数据填充很方便,支持国际化
    复制代码


    三、使用方法
    1、引入js、css

    1. <!--css样式-->
    2. <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet">
    3. <link href="css/bootstrap/bootstrap-table.css" rel="stylesheet">
    4. <!--js-->
    5. <script src="js/bootstrap/jquery-1.12.0.min.js" type="text/javascript"></script>
    6. <script src="js/bootstrap/bootstrap.min.js"></script>
    7. <script src="js/bootstrap/bootstrap-table.js"></script>
    8. <script src="js/bootstrap/bootstrap-table-zh-CN.js"></script>
    复制代码


    2、table数据填充
    bootStrap table获取数据有两种方式,一是通过table 的data-url属性指定数据源,二是通过javaScript初始化表格时指定url来获取数据

    1. <table data-toggle="table">
    2.     <thead>
    3.         ...
    4.     </thead>
    5. </table>
    复制代码


    ...

    1. $("#table").bootstrapTable({
    2.           url: "data.json"
    3. });
    复制代码


    第二种方式交第一种而言在处理复杂数据时更为灵活,一般使用第二种方式来进行table数据填充。

    1. $(function () {
    2.             //1.初始化Table
    3.             var oTable = new TableInit();
    4.             oTable.Init();
    5.             //2.初始化Button的点击事件
    6.             /* var oButtonInit = new ButtonInit();
    7.             oButtonInit.Init(); */
    8.         });
    9.         var TableInit = function () {
    10.             var oTableInit = new Object();
    11.             //初始化Table
    12.             oTableInit.Init = function () {
    13.                 $("#tradeList").bootstrapTable({
    14.                     url: "/VenderManager/TradeList",         //请求后台的URL(*)
    15.                     method: "post",                      //请求方式(*)
    16.                     toolbar: "#toolbar",                //工具按钮用哪个容器
    17.                     striped: true,                      //是否显示行间隔色
    18.                     cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
    19.                     pagination: true,                   //是否显示分页(*)
    20.                     sortable: false,                     //是否启用排序
    21.                     sortOrder: "asc",                   //排序方式
    22.                     queryParams: oTableInit.queryParams,//传递参数(*)
    23.                     sidePagination: "server",           //分页方式:client客户端分页,server服务端分页(*)
    24.                     pageNumber:1,                       //初始化加载第一页,默认第一页
    25.                     pageSize: 50,                       //每页的记录行数(*)
    26.                     pageList: [10, 25, 50, 100],        //可供选择的每页的行数(*)
    27.                     strictSearch: true,
    28.                     clickToSelect: true,                //是否启用点击选中行
    29.                     height: 460,                        //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
    30.                     uniqueId: "id",                     //每一行的唯一标识,一般为主键列
    31.                     cardView: false,                    //是否显示详细视图
    32.                     detailView: false,                   //是否显示父子表
    33.                     columns: [{
    34.                         field: "id",
    35.                         title: "序号"
    36.                     }, {
    37.                         field: "liushuiid",
    38.                         title: "交易编号"
    39.                     }, {
    40.                         field: "orderid",
    41.                         title: "订单号"
    42.                     }, {
    43.                         field: "receivetime",
    44.                         title: "交易时间"
    45.                     }, {
    46.                         field: "price",
    47.                         title: "金额"
    48.                     }, {
    49.                         field: "coin_credit",
    50.                         title: "投入硬币"
    51.                     },  {
    52.                         field: "bill_credit",
    53.                         title: "投入纸币"
    54.                     },  {
    55.                         field: "changes",
    56.                         title: "找零"
    57.                     }, {
    58.                         field: "tradetype",
    59.                         title: "交易类型"
    60.                     },{
    61.                         field: "goodmachineid",
    62.                         title: "货机号"
    63.                     },{
    64.                         field: "inneridname",
    65.                         title: "货道号"
    66.                     },{
    67.                         field: "goodsName",
    68.                         title: "商品名称"
    69.                     }, {
    70.                         field: "changestatus",
    71.                         title: "支付"
    72.                     },{
    73.                         field: "sendstatus",
    74.                         title: "出货"
    75.                     },]
    76.                 });
    77.             };
    78.             //得到查询的参数
    79.           oTableInit.queryParams = function (params) {
    80.                 var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
    81.                     limit: params.limit,   //页面大小
    82.                     offset: params.offset,  //页码
    83.                     sdate: $("#stratTime").val(),
    84.                     edate: $("#endTime").val(),
    85.                     sellerid: $("#sellerid").val(),
    86.                     orderid: $("#orderid").val(),
    87.                     CardNumber: $("#CardNumber").val(),
    88.                     maxrows: params.limit,
    89.                     pageindex:params.pageNumber,
    90.                     portid: $("#portid").val(),
    91.                     CardNumber: $("#CardNumber").val(),
    92.                     tradetype:$("input:radio[name="tradetype"]:checked").val(),
    93.                     success:$("input:radio[name="success"]:checked").val(),
    94.                 };
    95.                 return temp;
    96.             };
    97.             return oTableInit;
    98.         };
    复制代码


      
    field字段必须与服务器端返回的字段对应才会显示出数据。
    3、后台获取数据
        a、Servlet获取数据

    1. BufferedReader bufr =  new BufferedReader(
    2.         new InputStreamReader(request.getInputStream(),"UTF-8"));
    3.         StringBuilder sBuilder = new StringBuilder("");
    4.         String temp = "";
    5.         while((temp = bufr.readLine()) != null){
    6.                sBuilder.append(temp);
    7.           }
    8.         bufr.close();
    9.         String json = sBuilder.toString();
    10.         JSONObject json1 = JSONObject.fromObject(json);
    11.         String sdate= json1.getString("sdate");//通过此方法获取前端数据
    12.         ...
    复制代码


       b、SpringMVC Controller里面对应的方法获取数据

    1. public JsonResult GetDepartment(int limit, int offset, string orderId, string SellerId,PortId,CardNumber,Success,maxrows,tradetype)
    2. {
    3. ...
    4. }
    复制代码


    4、分页(遇到问题最多的)
    使用分页,server端返回的数据必须包括rows和total,代码如下:

    1. ...
    2. gblst = SqlADO.getTradeList(sql,pageindex,maxrows);
    3. JSONArray jsonData=new JSONArray();
    4.                 JSONObject jo=null;
    5.                 for (int i=0,len=gblst.size();i<len;i++)
    6.                 {
    7.                         TradeBean tb = gblst.get(i);
    8.                         if(tb==null)
    9.                         {
    10.                                 continue;
    11.                         }
    12.                         jo=new JSONObject();
    13.                         jo.put("id",  i+1);
    14.                         jo.put("liushuiid", tb.getLiushuiid());
    15.                         jo.put("price", String.format("%1.2f",tb.getPrice()/100.0));
    16.                         jo.put("mobilephone", tb.getMobilephone());
    17.                         jo.put("receivetime", ToolBox.getYMDHMS(tb.getReceivetime()));
    18.                         jo.put("tradetype", clsConst.TRADE_TYPE_DES[tb.getTradetype()]);
    19.                         jo.put("changestatus", (tb.getChangestatus()!=0)?"成功":"失败");
    20.                         jo.put("sendstatus", (tb.getSendstatus()!=0)?"成功":"失败");
    21.                         jo.put("bill_credit", String.format("%1.2f",tb.getBill_credit()/100.0));
    22.                         jo.put("changes",String.format("%1.2f",tb.getChanges()/100.0));
    23.                         jo.put("goodroadid", tb.getGoodroadid());
    24.                         jo.put("SmsContent", tb.getSmsContent());
    25.                         jo.put("orderid", tb.getOrderid());
    26.                         jo.put("goodsName", tb.getGoodsName());
    27.                         jo.put("inneridname", tb.getInneridname());
    28.                         jo.put("xmlstr", tb.getXmlstr());
    29.                        
    30.                         jsonData.add(jo);
    31.                 }
    32.                 int TotalCount=SqlADO.getTradeRowsCount(sql);
    33.                 JSONObject jsonObject=new JSONObject();
    34.                 jsonObject.put("rows", jsonData);//JSONArray
    35.                 jsonObject.put("total",TotalCount);//总记录数
    36.                 out.print(jsonObject.toString());      
    37. ...        
    复制代码


    5、分页界面内容介绍

    前端获取分页数据,代码如下:

    1. ...
    2. oTableInit.queryParams = function (params) {
    3.             var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
    4.                 limit: params.limit,   //第几条记录
    5.                 offset: params.offset,  //显示一页多少记录
    6.                 sdate: $("#stratTime").val(),
    7.             };
    8.             return temp;
    9.         };
    10. ...
    复制代码


    后端获取分页数据,代码如下:

    1. ...
    2. int pageindex=0;
    3. int offset = ToolBox.filterInt(json1.getString("offset"));
    4. int limit = ToolBox.filterInt(json1.getString("limit"));       
    5. if(offset !=0){
    6.     pageindex = offset/limit;
    7. }
    8.     pageindex+= 1;//第几页
    9. ...
    复制代码


    四、其他
    Bootstrap3兼容IE8浏览器
    回复

    使用道具 举报

    匿名  发表于 2019-7-29 10:02:04
    大佬,可以分享一下源码吗
    回复 支持 反对

    使用道具

    该用户从未签到

    发表于 2019-12-6 09:29:22 | 显示全部楼层
    谢谢楼主的无私奉献。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-19 05:34 , Processed in 0.372531 second(s), 39 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表