Bootstrap table使用知识-转

http://www.cnblogs.com/landeanfen/p/5005367.html

官方文档:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/

最近客户提出需求,想将原有的管理系统,做下优化,通过手机也能很好展现,想到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

2

3

4

5

6

7

8

<!--css样式-->

<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet">

<link href="css/bootstrap/bootstrap-table.css" rel="stylesheet">

<!--js-->

<script src="js/bootstrap/jquery-1.12.0.min.js" type="text/javascript"></script>

<script src="js/bootstrap/bootstrap.min.js"></script>

<script src="js/bootstrap/bootstrap-table.js"></script>

<script src="js/bootstrap/bootstrap-table-zh-CN.js"></script>

2、table数据填充

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


1

2

3

4

5

<table data-toggle="table">

    <thead>

        ...

    </thead>

</table>

...


1

2

3

$(‘#table‘).bootstrapTable({

          url: ‘data.json‘

 });

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

$(function () {

        //1.初始化Table

        var oTable = new TableInit();

        oTable.Init();

        //2.初始化Button的点击事件

        /* var oButtonInit = new ButtonInit();

        oButtonInit.Init(); */

    });

    var TableInit = function () {

        var oTableInit = new Object();

        //初始化Table

        oTableInit.Init = function () {

            $(‘#tradeList‘).bootstrapTable({

                url: ‘/VenderManager/TradeList‘,         //请求后台的URL(*)

                method: ‘post‘,                      //请求方式(*)

                toolbar: ‘#toolbar‘,                //工具按钮用哪个容器

                striped: true,                      //是否显示行间隔色

                cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)

                pagination: true,                   //是否显示分页(*)

                sortable: false,                     //是否启用排序

                sortOrder: "asc",                   //排序方式

                queryParams: oTableInit.queryParams,//传递参数(*)

                sidePagination: "server",           //分页方式:client客户端分页,server服务端分页(*)

                pageNumber:1,                       //初始化加载第一页,默认第一页

                pageSize: 50,                       //每页的记录行数(*)

                pageList: [102550100],        //可供选择的每页的行数(*)

                strictSearch: true,

                clickToSelect: true,                //是否启用点击选中行

                height: 460,                        //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度

                uniqueId: "id",                     //每一行的唯一标识,一般为主键列

                cardView: false,                    //是否显示详细视图

                detailView: false,                   //是否显示父子表

                columns: [{

                    field: ‘id‘,

                    title: ‘序号‘

                }, {

                    field: ‘liushuiid‘,

                    title: ‘交易编号‘

                }, {

                    field: ‘orderid‘,

                    title: ‘订单号‘

                }, {

                    field: ‘receivetime‘,

                    title: ‘交易时间‘

                }, {

                    field: ‘price‘,

                    title: ‘金额‘

                }, {

                    field: ‘coin_credit‘,

                    title: ‘投入硬币‘

                },  {

                    field: ‘bill_credit‘,

                    title: ‘投入纸币‘

                },  {

                    field: ‘changes‘,

                    title: ‘找零‘

                }, {

                    field: ‘tradetype‘,

                    title: ‘交易类型‘

                },{

                    field: ‘goodmachineid‘,

                    title: ‘货机号‘

                },{

                    field: ‘inneridname‘,

                    title: ‘货道号‘

                },{

                    field: ‘goodsName‘,

                    title: ‘商品名称‘

                }, {

                    field: ‘changestatus‘,

                    title: ‘支付‘

                },{

                    field: ‘sendstatus‘,

                    title: ‘出货‘

                },]

            });

        };

        //得到查询的参数

      oTableInit.queryParams = function (params) {

            var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的

                limit: params.limit,   //页面大小

                offset: params.offset,  //页码

                sdate: $("#stratTime").val(),

                edate: $("#endTime").val(),

                sellerid: $("#sellerid").val(),

                orderid: $("#orderid").val(),

                CardNumber: $("#CardNumber").val(),

                maxrows: params.limit,

                pageindex:params.pageNumber,

                portid: $("#portid").val(),

                CardNumber: $("#CardNumber").val(),

                tradetype:$(‘input:radio[name="tradetype"]:checked‘).val(),

                success:$(‘input:radio[name="success"]:checked‘).val(),

            };

            return temp;

        };

        return oTableInit;

    };

field字段必须与服务器端返回的字段对应才会显示出数据。

3、后台获取数据

a、servlet获取数据


1

2

3

4

5

6

7

8

9

10

11

12

BufferedReader bufr =  new BufferedReader(

    new InputStreamReader(request.getInputStream(),"UTF-8"));

    StringBuilder sBuilder = new StringBuilder("");

    String temp = "";

    while((temp = bufr.readLine()) != null){

           sBuilder.append(temp);

      }

    bufr.close();

    String json = sBuilder.toString();

    JSONObject json1 = JSONObject.fromObject(json);

    String sdate= json1.getString("sdate");//通过此方法获取前端数据

        ...

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


1

2

3

4

public JsonResult GetDepartment(int limit, int offset, string orderId, string SellerId,PortId,CardNumber,Success,maxrows,tradetype)

{

 ...

}

4、分页(遇到问题最多的)

使用分页,server端返回的数据必须包括rows和total,代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

...<br>gblst = SqlADO.getTradeList(sql,pageindex,maxrows);

JSONArray jsonData=new JSONArray();

        JSONObject jo=null;

        for (int i=0,len=gblst.size();i<len;i++)

        {

            TradeBean tb = gblst.get(i);

            if(tb==null)

            {

                continue;

            }

            jo=new JSONObject();

            jo.put("id",  i+1);

            jo.put("liushuiid", tb.getLiushuiid());

            jo.put("price", String.format("%1.2f",tb.getPrice()/100.0));

            jo.put("mobilephone", tb.getMobilephone());

            jo.put("receivetime", ToolBox.getYMDHMS(tb.getReceivetime()));

            jo.put("tradetype", clsConst.TRADE_TYPE_DES[tb.getTradetype()]);

            jo.put("changestatus", (tb.getChangestatus()!=0)?"成功":"失败");

            jo.put("sendstatus", (tb.getSendstatus()!=0)?"成功":"失败");

            jo.put("bill_credit", String.format("%1.2f",tb.getBill_credit()/100.0));

                        jo.put("changes",String.format("%1.2f",tb.getChanges()/100.0));

            jo.put("goodroadid", tb.getGoodroadid());

            jo.put("SmsContent", tb.getSmsContent());

            jo.put("orderid", tb.getOrderid());

            jo.put("goodsName", tb.getGoodsName());

            jo.put("inneridname", tb.getInneridname());

            jo.put("xmlstr", tb.getXmlstr());

            

            jsonData.add(jo);

        }

        int TotalCount=SqlADO.getTradeRowsCount(sql);

        JSONObject jsonObject=new JSONObject();

        jsonObject.put("rows", jsonData);//JSONArray

        jsonObject.put("total",TotalCount);//总记录数

        out.print(jsonObject.toString());       <br>...       

5、分页界面内容介绍

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


1

2

3

4

5

6

7

8

9

...<br>oTableInit.queryParams = function (params) {

            var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的

                limit: params.limit,   //第几条记录

                offset: params.offset,  //显示一页多少记录

                sdate: $("#stratTime").val(),

            };

            return temp;

        };<br>...

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


1

2

3

4

5

6

7

...<br>int pageindex=0;

int offset = ToolBox.filterInt(json1.getString("offset"));

int limit = ToolBox.filterInt(json1.getString("limit"));   

if(offset !=0){

    pageindex = offset/limit;

}

    pageindex+= 1;//第几页<br>...

最近客户提出需求,想将原有的管理系统,做下优化,通过手机也能很好展现,想到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

2

3

4

5

6

7

8

<!--css样式-->

<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet">

<link href="css/bootstrap/bootstrap-table.css" rel="stylesheet">

<!--js-->

<script src="js/bootstrap/jquery-1.12.0.min.js" type="text/javascript"></script>

<script src="js/bootstrap/bootstrap.min.js"></script>

<script src="js/bootstrap/bootstrap-table.js"></script>

<script src="js/bootstrap/bootstrap-table-zh-CN.js"></script>

2、table数据填充

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


1

2

3

4

5

<table data-toggle="table">

    <thead>

        ...

    </thead>

</table>

...


1

2

3

$(‘#table‘).bootstrapTable({

          url: ‘data.json‘

 });

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

$(function () {

        //1.初始化Table

        var oTable = new TableInit();

        oTable.Init();

        //2.初始化Button的点击事件

        /* var oButtonInit = new ButtonInit();

        oButtonInit.Init(); */

    });

    var TableInit = function () {

        var oTableInit = new Object();

        //初始化Table

        oTableInit.Init = function () {

            $(‘#tradeList‘).bootstrapTable({

                url: ‘/VenderManager/TradeList‘,         //请求后台的URL(*)

                method: ‘post‘,                      //请求方式(*)

                toolbar: ‘#toolbar‘,                //工具按钮用哪个容器

                striped: true,                      //是否显示行间隔色

                cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)

                pagination: true,                   //是否显示分页(*)

                sortable: false,                     //是否启用排序

                sortOrder: "asc",                   //排序方式

                queryParams: oTableInit.queryParams,//传递参数(*)

                sidePagination: "server",           //分页方式:client客户端分页,server服务端分页(*)

                pageNumber:1,                       //初始化加载第一页,默认第一页

                pageSize: 50,                       //每页的记录行数(*)

                pageList: [102550100],        //可供选择的每页的行数(*)

                strictSearch: true,

                clickToSelect: true,                //是否启用点击选中行

                height: 460,                        //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度

                uniqueId: "id",                     //每一行的唯一标识,一般为主键列

                cardView: false,                    //是否显示详细视图

                detailView: false,                   //是否显示父子表

                columns: [{

                    field: ‘id‘,

                    title: ‘序号‘

                }, {

                    field: ‘liushuiid‘,

                    title: ‘交易编号‘

                }, {

                    field: ‘orderid‘,

                    title: ‘订单号‘

                }, {

                    field: ‘receivetime‘,

                    title: ‘交易时间‘

                }, {

                    field: ‘price‘,

                    title: ‘金额‘

                }, {

                    field: ‘coin_credit‘,

                    title: ‘投入硬币‘

                },  {

                    field: ‘bill_credit‘,

                    title: ‘投入纸币‘

                },  {

                    field: ‘changes‘,

                    title: ‘找零‘

                }, {

                    field: ‘tradetype‘,

                    title: ‘交易类型‘

                },{

                    field: ‘goodmachineid‘,

                    title: ‘货机号‘

                },{

                    field: ‘inneridname‘,

                    title: ‘货道号‘

                },{

                    field: ‘goodsName‘,

                    title: ‘商品名称‘

                }, {

                    field: ‘changestatus‘,

                    title: ‘支付‘

                },{

                    field: ‘sendstatus‘,

                    title: ‘出货‘

                },]

            });

        };

        //得到查询的参数

      oTableInit.queryParams = function (params) {

            var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的

                limit: params.limit,   //页面大小

                offset: params.offset,  //页码

                sdate: $("#stratTime").val(),

                edate: $("#endTime").val(),

                sellerid: $("#sellerid").val(),

                orderid: $("#orderid").val(),

                CardNumber: $("#CardNumber").val(),

                maxrows: params.limit,

                pageindex:params.pageNumber,

                portid: $("#portid").val(),

                CardNumber: $("#CardNumber").val(),

                tradetype:$(‘input:radio[name="tradetype"]:checked‘).val(),

                success:$(‘input:radio[name="success"]:checked‘).val(),

            };

            return temp;

        };

        return oTableInit;

    };

field字段必须与服务器端返回的字段对应才会显示出数据。

3、后台获取数据

a、servlet获取数据


1

2

3

4

5

6

7

8

9

10

11

12

BufferedReader bufr =  new BufferedReader(

    new InputStreamReader(request.getInputStream(),"UTF-8"));

    StringBuilder sBuilder = new StringBuilder("");

    String temp = "";

    while((temp = bufr.readLine()) != null){

           sBuilder.append(temp);

      }

    bufr.close();

    String json = sBuilder.toString();

    JSONObject json1 = JSONObject.fromObject(json);

    String sdate= json1.getString("sdate");//通过此方法获取前端数据

        ...

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


1

2

3

4

public JsonResult GetDepartment(int limit, int offset, string orderId, string SellerId,PortId,CardNumber,Success,maxrows,tradetype)

{

 ...

}

4、分页(遇到问题最多的)

使用分页,server端返回的数据必须包括rows和total,代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

...<br>gblst = SqlADO.getTradeList(sql,pageindex,maxrows);

JSONArray jsonData=new JSONArray();

        JSONObject jo=null;

        for (int i=0,len=gblst.size();i<len;i++)

        {

            TradeBean tb = gblst.get(i);

            if(tb==null)

            {

                continue;

            }

            jo=new JSONObject();

            jo.put("id",  i+1);

            jo.put("liushuiid", tb.getLiushuiid());

            jo.put("price", String.format("%1.2f",tb.getPrice()/100.0));

            jo.put("mobilephone", tb.getMobilephone());

            jo.put("receivetime", ToolBox.getYMDHMS(tb.getReceivetime()));

            jo.put("tradetype", clsConst.TRADE_TYPE_DES[tb.getTradetype()]);

            jo.put("changestatus", (tb.getChangestatus()!=0)?"成功":"失败");

            jo.put("sendstatus", (tb.getSendstatus()!=0)?"成功":"失败");

            jo.put("bill_credit", String.format("%1.2f",tb.getBill_credit()/100.0));

                        jo.put("changes",String.format("%1.2f",tb.getChanges()/100.0));

            jo.put("goodroadid", tb.getGoodroadid());

            jo.put("SmsContent", tb.getSmsContent());

            jo.put("orderid", tb.getOrderid());

            jo.put("goodsName", tb.getGoodsName());

            jo.put("inneridname", tb.getInneridname());

            jo.put("xmlstr", tb.getXmlstr());

            

            jsonData.add(jo);

        }

        int TotalCount=SqlADO.getTradeRowsCount(sql);

        JSONObject jsonObject=new JSONObject();

        jsonObject.put("rows", jsonData);//JSONArray

        jsonObject.put("total",TotalCount);//总记录数

        out.print(jsonObject.toString());       <br>...       

5、分页界面内容介绍

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


1

2

3

4

5

6

7

8

9

...<br>oTableInit.queryParams = function (params) {

            var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的

                limit: params.limit,   //第几条记录

                offset: params.offset,  //显示一页多少记录

                sdate: $("#stratTime").val(),

            };

            return temp;

        };<br>...

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


1

2

3

4

5

6

7

...<br>int pageindex=0;

int offset = ToolBox.filterInt(json1.getString("offset"));

int limit = ToolBox.filterInt(json1.getString("limit"));   

if(offset !=0){

    pageindex = offset/limit;

}

    pageindex+= 1;//第几页<br>...

时间: 2024-10-15 03:01:42

Bootstrap table使用知识-转的相关文章

JS组件系列——Bootstrap Table 表格行拖拽

原文:JS组件系列--Bootstrap Table 表格行拖拽 前言:之前一直在研究DDD相关知识,好久没更新JS系列文章了.这两天做了一个简单的业务需求,觉得效果还可以,今天在这里分享给大家,欢迎拍砖~~ 一.业务需求及实现效果 项目涉及到订单模块,那天突然接到一个需求,说是两种不同状态的订单之间要实现插单的效果,页面上呈现方式是:左右两个Table,左边Table里面是状态为1的订单,右边Table里面是状态为2订单,左边Table里面的行数据拖动到右边Table里面指定行的位置,拖动完成

bootstrap table 服务器端分页--ashx+ajax

1.准备静态页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 <meta charset="utf-8" /> 7 <link rel="

Bootstrap Table Fixed Columns

最近在使用BootStrap 做项目前端,自然也用到了  Bootstrap Table. 推荐大家多去这个http://bootstrap-table.wenzhixin.net.cn/zh-cn/  网站看看,上面有很详细的介绍以及其他扩展功能 下面写下 Fixed Columns(固定列)的使用方法.附件下载地址:http://pan.baidu.com/s/1kUEQTPt 1.引用css文件,js文件(注意引用顺序) <link rel="stylesheet" hre

html5 jquery bootstrap table 直接使用

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta name="viewport" content="width=device-w

JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)

前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能覆盖似乎不太现实,博主挑选了一些自认为比较常用的功能在此分享给各位园友.源码也在这篇统一给出.好了,不多说废话,开始我们的干货之旅吧. bootstrap table系列: JS组件系列——表格组件神器:bootstrap table JS组件系列——表格组件神器:bootstrap table(二

Bootstrap table

Bootstrap table: <!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="dist/css/bootstrap.css"> </head> <

新的表格展示利器 Bootstrap Table Ⅱ

    上一篇文章介绍了Bootstrap Table的基本知识点和应用,本文针对上一篇文章中未解决的文件导出问题进行分析,同时介绍BootStrap Table的扩展功能,当行表格数据修改. 1.Bootstrap Bable 全部数据导出分析 在表格导出数据中,发现设置了分页参数,导出的数据仅为表格加载的分页参数数据,于是,针对这样的情况,通过设置分页参数的值,使表格可以加载更多的数据,可达到导出所有数据的功能需求.然而,在实际的实验中,发现此方案存在以下问题: 表格一次加载一千条数据时,网

BootStrap table使用

bootstrap table git address https://github.com/wenzhixin/bootstrap-table 引入文件 <link rel="stylesheet" href="../bower_components/bootstrap/dist/css/bootstrap.min.css"/> <link rel="stylesheet" href="../bower_compon

Bootstrap Table使用分享

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