当前位置:首页 > 生活百科

bootstrap源码使用(bootstrap设计的精美网站推荐)

栏目:生活百科日期:2025-04-10浏览:0

今天要做一个报表导入并预览的功能,使用layui的文件上传,获取表格数据,接着把表格数据返回前台,使用bootstraptable展示,实现一个预览表格数据的效果。通过后台处理后的数据bootstraptable加载数据,其实具体实现不难,今天要讲的是在实现数据加载之后,我们出现了一些问题,我会附源码讲解问题的解决方案分享给大家

通过后台处理后的数据

// 数据经过处理后,真实数据已做修改Data = &[{JJSRBY: 6666,JJSRBYLJ: 155666,JJZCBY: 777,JJZCBYLJ: 2266633,LJJY: 151515,NCYE: 121212,SZYEBY: 11111,SZYEBYLJ: -11559,XZ: "企业职工基本养老保险",ZFNL: 22.1},{JJSRBY: 6666,JJSRBYLJ: 155666,JJZCBY: 777,JJZCBYLJ: 2266633,LJJY: 151515,NCYE: 121212,SZYEBY: 11111,SZYEBYLJ: -11559,XZ: "工伤保险",ZFNL: 22.1},...];

bootstraptable加载数据

// field 需要和 Data中每个对象中的字段名对应。// $('#previewTable').bootstrapTable({    data : Data,    //toolbar: '#toolBar',     striped: true, //是否显示行间隔色    cache: false, //是否使用缓存,默认为true,    //minimumCountColumns: 2, //最少允许的列数    clickToSelect: true, //是否启用点击选中行    columns: &[   &[         {field : 'XZ', title: '险种', rowspan:2, align:"center"},         {field : 'NCYE', title: '年初余额', rowspan:2,halign:"center",align:"right",       formatter: function(value, row, index) {       let num = row.NCYE;  return num.toFixed(2);  }         },         {title: '基金收入', colspan:2,align:"center"},         {title: '基金支出', colspan:2,align:"center"},         {title: '当年收支结余', colspan:2,align:"center"},         {field : 'LJJY',title:'累计结余', rowspan:2,halign:"center",align:"right",       formatter: function(value, row, index) {       let num = row.LJJY;  return num.toFixed(2);  }         },         {field : 'ZFNL',title: '支付能力(月)', rowspan:2,halign:"center",align:"right",       formatter: function(value, row, index) {       let num = row.ZFNL;  return num.toFixed(1);  }         },       ],       &[       {field : 'JJSRBY',title:'本月', colspan:1,halign:"center",align:"right",       formatter: function(value, row, index) {       let num = row.JJSRBY;  return num.toFixed(2);  }       },       {field : 'JJSRBYLJ',title:'本月止累计', colspan:1,halign:"center",align:"right",       formatter: function(value, row, index) {       let num = row.JJSRBYLJ;  return num.toFixed(2);  }       },       {field : 'JJZCBY',title:'本月', colspan:1,halign:"center",align:"right",       formatter: function(value, row, index) {       let num = row.JJZCBY;  return num.toFixed(2);  }       },       {field : 'JJZCBYLJ',title:'本月止累计', colspan:1,halign:"center",align:"right",       formatter: function(value, row, index) {       let num = row.JJZCBYLJ;  return num.toFixed(2);  }       },       {field : 'SZYEBY',title:'本月', colspan:1,halign:"center",align:"right",       formatter: function(value, row, index) {       let num = row.SZYEBY;  return num.toFixed(2);  }       },       {field : 'SZYEBYLJ',title:'本月止累计', colspan:1,halign:"center",align:"right",       formatter: function(value, row, index) {       let num = row.SZYEBYLJ;  return num.toFixed(2);  }       }       ]    ],    formatNoMatches : function() {    return '&<p&> 暂无数据 &</p&>';// 如果无数据则显示这个    }    });

这个实现其实不难,但是,没想到的是,接下来的步骤出问题了,因为我们需要实现BootstrapTable重新加载,这种问题有以下两种解决方案:

原始加载的表格

解决后加载表格

最重要的一点,写在最前面:BootstrapTable一个页面只能加载一次;想要重新加载,就必须先销毁 , 再重新初始化Bootstraptable。
销毁的方法:

$(&‘#id&’).bootstrapTable(&‘destroy&’);

好了,接下来我们来看以以下具体实现方式


遇到此问题的情景

在table上方添加了文本输入框,用于查询过滤table中的数据,因此需要根据查询条件,重新向后台向DAO层发送请求,返回新的结果。

解决办法

原始加载的表格

这是一开始进入页面加载的表格。

$('#infoList').bootstrapTable({         url: '${pageContext.request.contextPath}/xx/xxx', //请求后台的URL(*)         method: 'post', //请求方式(*)         contentType: 'application/x-www-form-urlencoded',         toolbar: '#toolbar', //工具按钮用哪个容器         striped: true, //是否显示行间隔色         cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)         pagination: true, //是否显示分页(*)         sortable: false, //是否启用排序         sortOrder: "desc", //排序方式         sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)         pageNumber: 1, //初始化加载第一页,默认第一页         pageSize: 10, //每页的记录行数(*)         pageList: &[10, 50, 100], //可供选择的每页的行数(*)         strictSearch: true,         showColumns: false, //是否显示所有的列         showRefresh: false, //是否显示刷新按钮         minimumCountColumns: 2, //最少允许的列数         clickToSelect: true, //是否启用点击选中行         //uniqueId: "aac147", //每一行的唯一标识,一般为主键列         showToggle: false, //是否显示详细视图和列表视图的切换按钮         cardView: false, //是否显示详细视图         detailView: false, //是否显示父子表         queryParams: queryParams, //所需要的参数        queryParamsType: "limit", //参数格式,发送标准的RESTFul类型的参数请求         columns: myColumns,// 列名这里通过别处方法加载         onClickRow: function (row, obj) {//点击事件             ...         },         onLoadSuccess: function (data) {         ...         }});function queryParams(params) {  //配置参数        var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的            pageSize: params.limit,   //页面大小            pageNumber: (params.offset / params.limit) + 1,  //页码        };        return temp;}1234567891011121314151617181920212223242526272829303132333435363738394041

想要实现的效果:
此时我需要在表格上方,加上文本输入框,并添加 查询按钮 ,点击查询按钮,把输入的条件加入到 表格参数 queryParams 中,通过数据库的查询 返回数据,并更改表格结构和内容,做到重新加载的效果。

但是失败了。

解决后加载表格

需要在点击查询按钮时,首先调用 表格销毁方法

$('#infoList').bootstrapTable('destroy');

接着再重新加载新的表格:

$('#infoList').bootstrapTable({url: '${pageContext.request.contextPath}/xx/xxx2', //请求后台的URL(*)    method: 'post', //请求方式(*)    contentType: 'application/x-www-form-urlencoded',    toolbar: '#toolbar', //工具按钮用哪个容器    striped: true, //是否显示行间隔色    cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)    pagination: true, //是否显示分页(*)    sortable: false, //是否启用排序    sortOrder: "desc", //排序方式    sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)    pageNumber: 1, //初始化加载第一页,默认第一页    pageSize: 10, //每页的记录行数(*)    pageList: &[10, 50 ,100], //可供选择的每页的行数(*)    strictSearch: true,    showColumns: false, //是否显示所有的列    showRefresh: false, //是否显示刷新按钮    minimumCountColumns: 2, //最少允许的列数    clickToSelect: true, //是否启用点击选中行    showToggle: false, //是否显示详细视图和列表视图的切换按钮    cardView: false, //是否显示详细视图    detailView: false, //是否显示父子表    queryParams: function(params){    return {    pageSize: params.limit,   //页面大小            pageNumber: (params.offset / params.limit) + 1,  //页码            keyword: $("#search_json").val(),// 关键词    };    },    queryParamsType: "limit", //参数格式,发送标准的RESTFul类型的参数请求    columns: myColumns,    onClickRow: function (row, obj) {        ...    },    onLoadSuccess: function (data) {        ...    }});function queryParams2(params) {  // 配置参数 有查询条件用    var keyword = $("#search_json").val();    var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的    pageSize: params.limit,   //页面大小    pageNumber: (params.offset / params.limit) + 1,  //页码        keyword: keyword// 查询关键词    };return temp;}

注意:具体实现代码太过庞大,所以以上代码并不完整只是提供思路。

“bootstrap源码使用(bootstrap设计的精美网站推荐)” 的相关文章

做淘宝网店的运营流程(8个方面做好淘宝网店运营)

现在经营淘宝店铺已经不是有质量优质的产品,充足的货源,简单的拍点图片就可以做好的了,其中有很多运营的细节需要做好,对于新入驻淘宝的小伙伴们,需要了解多少呢?今天...

信息流广告文案创意与撰写(创意撰写的7个方面)

展现量的主要影响因素由出价和CTR(点击率)共同决定。出价不变,提升CTR(点击率)可考虑下面三点:▲更新频率:建议您每隔3~7天更新一次广告素材,如果所投放的...

如何管理好员工,管理员工的10个绝招

管理岗位是个责任重大、充满挑战的岗位,当今时代的成功已经不是单靠一个成功的管理者就可以了,还需要带领整个团队的成功。那要如何管理好你的员工呢?不妨先看看这些管理...

什么是视觉营销,视觉营销的流程和原则介绍

随着市场竞争的加剧和科学技术的发展,产品之间的差异化越来越趋于同质化,以文字符号为主导的媒介文化已经发生转变,逐渐形成一种以图像为主的“视觉文化”全球景观。在现...

世界保温杯排名前十迪士尼(专家简评十大品牌保温杯品质

前段时间,也给大家补充推荐了一款评测表现优秀的littletiny吸管保温杯(320ml)。今年秋冬,我们再来评测的,就是大容量保温杯了,宝宝到3岁左右,特别上...

p20和p20pro有啥区别外观(华为p20和p20pro对比参数)

2018年华为发布了华为P20和华为P20Pro,在拍照方面震惊了全世界,为国争光的华为终于能和国际大厂一拼高下。而这里很多人就问了,差价上千的华为P20和华为...

如何做好品牌精准营销,实现精准营销的营销方式

品牌营销策划如何做到精准营销精准营销(Precisionmarketing)就是在精准定位的基础上,依托现代信息技术手段建立个性化的顾客沟通服务体系,实现企业可...

什么牌子的太阳镜好,推荐10款平价好用的小众太阳眼镜

对于喜欢穿搭的潮人来说,太阳眼镜绝对是天天不离身的最好配件,除了遮阳遮小脸,一副适合自己的时髦墨镜更可以替夏日造型定生死。最近有许多别具特色的独立眼镜品牌值得大...

acdsee绿色版最新版本是哪个(acd看图软件安装步骤)

日前苹果iOS平台的修图应用《ACDSeePro》迎来限免,《ACDSeePro》是一款功能强大的相机增强、照片编辑的老牌软件。《ACDSeePro》界面相对专...

2023年广东快递什么时候停运(央视正式公布各快递停运时

每年临近春节,大家都非常关心春节期间的快递停运时间,早在2020年底,朋友圈就疯传2021年春节快递的提前停运时间,最近各家快递公司都出来辟谣,总体来说,今年各...