layui导出表格全部数据

发布: 2019-11-18 17:12:59
转载
9623 人浏览过

layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。

layui导出表格全部数据

layui自带的导出表格,只能导出当前页面,如果当前页包含全部数据,那不就是导出全部数据了吗,所以我给导出事件单独定义了一个请求,当触发这个请求时,在后台查询数据时不要按接收的page 和 limit查询,而是查询全部,这样就实现了导出全部数据。

页面代码:

<!--导出按钮 或其他触发事件-->
<button class="export">导出报表</button>

<!--导出表 不展示-->
<div style="display: none;">
    <table id="data_export">
    </table>
</div>
登录后复制
layui.use([&#39;form&#39;, &#39;table&#39;, &#39;layer&#39;], function () {
        var table = layui.table,
            form = layui.form,
            layer = layui.layer;
        //导出表格
        var ins1 = table.render({
            elem: &#39;#data_export&#39;,
            url: "url", //数据接口
            method: &#39;post&#39;,
            title: &#39;导出表的表名&#39;,
            where: {
                mycode: "all"
            },
            limit: 10,
            cols: [[
                {field: &#39;id&#39;, title: &#39;ID&#39;},
                {field: &#39;name&#39;, title: &#39;名称&#39;},
            ]],
            done: function (res, curr, count) {
                exportData = res.data;
            }
        });
        //导出按钮
        $(".export").click(function () {
            table.exportFile(ins1.config.id, exportData, &#39;xls&#39;);
        });
    })
登录后复制

后台处理:

if ($mycode) {    $data = M(&#39;mysql&#39;)->where($where)->select();  
    echo json_encode([&#39;code&#39; => 0, &#39;msg&#39; => "", &#39;data&#39; => $data]);                     
}
登录后复制

优化:对应的代码是上面第二段js代码:

//导出改为单独的事件,每次点击导出才会执行
    $(".export").click(function(){
        var ins1=table.render({
            elem: &#39;#data_export&#39;,
            url: "url", //数据接口
            method: &#39;post&#39;,
            title: &#39;表名&#39;,
            where: {
                mycode: "all"
            },
            limit: 10,
            cols: [[
                {field: &#39;id&#39;, title: &#39;ID&#39;},
                {field: &#39;name&#39;, title: &#39;名字&#39;},
            ]],
            done: function (res, curr, count) {
                exportData=res.data;
                table.exportFile(ins1.config.id,exportData, &#39;xls&#39;);
            }
        });
    })
登录后复制

其实就是把  table.exportFile(ins1.config.id,exportData, 'xls');  放到了done中,虽然看起来改的不多,但是本质已经变了,之前的方式是进入页面就加载隐藏的导出表。

而现在是点击导出的时候才会渲染隐藏导出表,在导出表内容多的时候,导出速度慢点用户会觉得是合理的,比页面加载速度慢要好多了。

更多layui相关知识请关注layui框架

以上是layui导出表格全部数据的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:cnblogs.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!