这篇文章主要介绍了layui如何导出表格全部数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联公司是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,微信小程序,十载建站对玻璃钢雕塑等多个方面,拥有丰富的网站制作经验。layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。
layui自带的导出表格,只能导出当前页面,如果当前页包含全部数据,那不就是导出全部数据了吗,所以我给导出事件单独定义了一个请求,当触发这个请求时,在后台查询数据时不要按接收的page 和 limit查询,而是查询全部,这样就实现了导出全部数据。
页面代码:
layui.use(['form', 'table', 'layer'], function () { var table = layui.table, form = layui.form, layer = layui.layer; //导出表格 var ins1 = table.render({ elem: '#data_export', url: "url", //数据接口 method: 'post', title: '导出表的表名', where: { mycode: "all" }, limit: 10, cols: [[ {field: 'id', title: 'ID'}, {field: 'name', title: '名称'}, ]], done: function (res, curr, count) { exportData = res.data; } }); //导出按钮 $(".export").click(function () { table.exportFile(ins1.config.id, exportData, 'xls'); }); })
后台处理:
if ($mycode) { $data = M('mysql')->where($where)->select(); echo json_encode(['code' => 0, 'msg' => "", 'data' => $data]); }
优化:对应的代码是上面第二段js代码:
//导出改为单独的事件,每次点击导出才会执行 $(".export").click(function(){ var ins1=table.render({ elem: '#data_export', url: "url", //数据接口 method: 'post', title: '表名', where: { mycode: "all" }, limit: 10, cols: [[ {field: 'id', title: 'ID'}, {field: 'name', title: '名字'}, ]], done: function (res, curr, count) { exportData=res.data; table.exportFile(ins1.config.id,exportData, 'xls'); } }); })
其实就是把 table.exportFile(ins1.config.id,exportData, 'xls'); 放到了done中,虽然看起来改的不多,但是本质已经变了,之前的方式是进入页面就加载隐藏的导出表。
而现在是点击导出的时候才会渲染隐藏导出表,在导出表内容多的时候,导出速度慢点用户会觉得是合理的,比页面加载速度慢要好多了。
感谢你能够认真阅读完这篇文章,希望小编分享的“layui如何导出表格全部数据”这篇文章对大家有帮助,同时也希望大家多多支持创新互联网站建设公司,,关注创新互联行业资讯频道,更多相关知识等着你来学习!