我是靠谱客的博主 简单故事,最近开发中收集的这篇文章主要介绍layui table.exportFile 导出数据常见应用场景,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

layui table.exportFile 导出数据

    • 数据准备工作
    • 场景1,导出全部数据
    • 场景2,导出选中的数据
    • 场景3,更改表格数据,再导出数据

最近遇到关于layui table渲染完表格将需要的数据导出的问题,于是将遇到的问题总结了下来。

数据准备工作

<button class="layui-btn" lay-submit lay-filter="requestPersonBtn">获取数据</button>
<button class="layui-btn" lay-submit lay-filter="exportPersonBtn">导出数据</button>

<!--   获取数据渲染的表格  -->
<table id="requestDataTable" class="dataTable"></table>

<!--   这里的表格,是一个隐藏的表格,做数据修改后的处理     -->
<div class="layui-hide"><table id="exportDataTable" class="dataTable"></table></div>

数据按钮
数据请求为本地测试数据:person.json

{
  "code": 0,
  "data": [
    {
      "name": "张三",
      "age": 20,
      "hobby": "打篮球"
    },
    {
      "name": "李四",
      "age": 22,
      "hobby": "唱歌"
    },
    {
      "name": "王五",
      "age": 21,
      "hobby": "跳舞"
    }
  ]
}

场景1,导出全部数据

点击获取数据时,会请求json数据,渲染数据表格,定义如下变量

let personDataTable; // 变量存储当前渲染出的表格

form.on('submit(requestPersonBtn)', function () {
        personDataTable = table.render({
            elem: '#requestDataTable',
            url: '../json/person.json', // json数据路径
            size: 'sm',
            id: 'requestDataTable',
            even: true,//隔行背景
            toolbar: "#toolbarTpl",
            defaultToolbar: ['filter'],
            contentType: 'application/json',
            cols: [[
                {field: 'name', title: '姓名', width: '240'},
                {field: 'age', title: '年龄', width: '240'},
                {field: 'hobby', title: '喜好', width: '240'}
            ]],
            height: 'full-110',
            done: function (res, curr, count) {
            }
        });
        return false;  //避免表单重复提交
    })

数据显示为:
在这里插入图片描述
点击导出数据按钮,需要做以下处理:
根据定义的 personDataTable 变量可以直接导出渲染的数据,如下图所示

form.on('submit(exportPersonBtn)', function () {
		// 这里不需要选择数据导出
        table.exportFile(personDataTable.config.id);
        return false;
    })

在这里插入图片描述

场景2,导出选中的数据

需要将table表格添加选择框,如下:

{filed: 'ID', type: 'checkbox', width: '50'},

在这里插入图片描述
获取选中的行数据

form.on('submit(exportPersonBtn)', function () {
		// 更改导出方法,需要选中数据导出
        let personData = getPersonArray();
        if(personData.length == 0){
            layer.msg("请选择需要导出的数据");
            return false;
        }
        console.log("personData", personData); //打印获取的数据
        table.exportFile(personDataTable.config.id, personData);
        return false;   //避免表单重复提交
    })

// 获取选中的数据
function getPersonArray() {
     let checkStatus = table.checkStatus('requestDataTable');
     return checkStatus.data;
 }

测试的结果如下,根据选中的数据导出数据
在这里插入图片描述
在这里插入图片描述

场景3,更改表格数据,再导出数据

请求数据渲染表格后,需要对表格某一行数据进行处理,比如:请求数据后,将张三的年龄设置22,并显示红色样式

done: function (res, curr, count) {
        // 0 为张三的固定索引,数据较多时需要遍历res,这里只做演示使用
	    let LAY_TABLE_INDEX = 0;  
        let td = $(".layui-table").find("[data-index='"+LAY_TABLE_INDEX+"']").find("[data-field='age']");
        td.html("22");
        td.css("color","red");
    }

在这里插入图片描述

再导出数据,发现是原来的数据,新数据并没有导出,如图:
在这里插入图片描述
在这里插入图片描述

table.exportFile 导出数据是 渲染表格后的原数据,如果数据做过修改,table.exportFile 无法导出新数据

处理问题: 我们前面定义了这样一行代码就有用啦,处理表格渲染后,将 更改后的数据渲染到 exportDataTable 表格中备份,导出的表格数据就是exportDataTable的数据,这样就能实现导出修改过的数据。

<div class="layui-hide"><table id="exportDataTable" class="dataTable"></table></div>

在渲染表格后 done 函数,需要做如下处理:

let personDataExport = []; //  定义变量,需要导出的表格

done: function (res, curr, count) {
       let LAY_TABLE_INDEX = 0;
        let td = $(".layui-table").find("[data-index='"+LAY_TABLE_INDEX+"']").find("[data-field='age']");
        td.html("22");
        td.css("color","red");
        $.each(res.data, function (index, item) {
            if(index == LAY_TABLE_INDEX){
                item.age = 22;
                personDataExport.push(item);
            }else{
                personDataExport.push((item));
            }
        })
        // 遍历数据,将新数据添加到 personDataExport ,渲染需要导出的表格
        init_export_table(personDataExport);
    }
    
// 定义 init_export_table 方法
function init_export_table(data) {
		// personDataTable 变量需要指向导出的表格
        personDataTable = table.render({
            elem: '#exportDataTable',  //表格ID
            data: data,
            size: 'sm',
            id: 'exportDataTable',
            even: true,//隔行背景
            toolbar: "#toolbarTpl",
            defaultToolbar: ['filter'],
            contentType: 'application/json',
            cols: [[
                {filed: 'ID', title: 'ID', type: 'checkbox', width: '50', align: 'center'},
                {field: 'name', title: '姓名', width: '240', align: 'center'},
                {field: 'age', title: '年龄', width: '240', align: 'center'},
                {field: 'hobby', title: '喜好', width: '240', align: 'center'}
            ]],
            height: 'full-110',
        });
    }

此时,再导出数据,就是更改后的数据。
在这里插入图片描述
总的来说,就是将修改后的数据备份,重新渲染一个新的表格,table.exportFile参数ID,指向这个表格。

最后

以上就是简单故事为你收集整理的layui table.exportFile 导出数据常见应用场景的全部内容,希望文章能够帮你解决layui table.exportFile 导出数据常见应用场景所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部