首頁  >  文章  >  web前端  >  layui匯出表格全部數據

layui匯出表格全部數據

尚
轉載
2019-11-18 17:12:599589瀏覽

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刪除
上一篇:layui常用方法下一篇:layui常用方法