【Bootstrap table 根据开始时间和结束时间动态生成表格,附后台JSON格式数据】

  1. 先来看效果图
  2. 动态生成表格原理:其实就是将bootstrap table 的columns动态生成
     

    3.步骤

  • ajax请求后台数据
  • 前端获取开始时间和结束时间的每一天的日期,添加到数组中
  • ajax请求成功,将前端获取的日期数组遍历,并动态构建columns

4.附上代码

//初始化table表格
function getColumns() {

       $.ajax({
           url : 'xxx/xxxxx.do',
           type : 'post',
           dataType : "json",
           data : {
               beginDate: $("#beginDate").val(),
               endDate: $("#endDate").val(),
           },
           async : false,
           success : function(returnValue) {
               var data = returnValue.rows;
               var dateStrArr=getDateStrArr();
               var mycolumn=[];

               mycolumn=[
                   {field: 'plateNumber', title: $.i18n.prop('PlateNumber'), align: 'center'},
               ]

               for(var s in dateStrArr) {
                   var str = dateStrArr[s];
                   mycolumn.push({
                       field: str,
                       title: str,
                       align: 'center',
                       valign: 'middle',
                       formatter: function (value,row,index) {
                           if(value!=0){
                               return "<a href='javascript:;' onclick='showDayMileage(\"" + row.boxId + "\",\"" + this.field + "\",\""+row.plateNumber+"\",\""+value+"\");' title='总公里' style='font-size: 15px;color:#FA7310'>" + value +"km"+ "</a>";
                           }else{
                               return 0+"km";
                           }
                       }
                   })
               }
               $('#recordList').bootstrapTable({
                   data:data,
                   cache:false,
                   pagination: true,
                   sidePagination : 'client',//前端分页
                   pageNumber : 1,
                   pageSize : 10,
                   pageList : [ 5, 10, 20, 30 ,50],
                   dataField: 'rows',
                   toolbar: '#toolbar',
                   striped: true,
                   clickToSelect: true,
                   showColumns: true,
                   showRefresh: true,
                   showToggle: true,
                   columns: mycolumn
               });
           }
       });
       }




//获取开始时间和结束时间中间的天数
 function getDateStrArr() {
            var dateStrArr=[];
            var beginDate = $("#beginDate").val();
            var endDate = $("#endDate").val();
            var date_count = GetNumberOfDays(beginDate, endDate);
            for (var i = 0; i <= date_count; i++) {
                var date_add = new Date(beginDate).setDate(new Date(beginDate).getDate() + i);
                var date =formatDateFromStr(date_add);
                dateStrArr.push(date);
            }
            ;
            return dateStrArr;
        };


         //获得天数
        function GetNumberOfDays(date1, date2) {
            var a1 = Date.parse(new Date(date1));
            var a2 = Date.parse(new Date(date2));
            //核心:时间戳相减,然后除以天数
            var day = parseInt((a2 - a1) / (1000 * 60 * 60 * 24));
            return day
        };



//日期格式转换年月日
function formatDateFromStr(str) {
    return (new Date(str)).format("yyyy-MM-dd");
}

 

5.后台返回json数据格式

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值