Layui表格自定义toolbar导出按钮的事件处理-Layui表格重写表格导出处理实现导出全部数据

Layui表格自定义toolbar导出按钮的事件处理-Layui表格重写表格导出处理实现导出全部数据

Layui表格toolbar里面的导出按钮只能导出当前页表格的数据,当需要导出查询条件所查询的所有数据时需要重写导出按钮的事件处理

解决方案

版本信息:layui2.92

  • 在layui.js文件中找出导出按钮的事件处理:
    所按钮文字转unicode编码在js文件中查找,如图:
    在这里插入图片描述
    查找:\u5bfc\u51fa csv

找到对应的代码格式化,如图:
在这里插入图片描述

  • k.exportFile.call(s, u.id, null, e) //这个地方就是导出文件的处理,其中e是文件类型,u是表格的配置参数,u.id是表格的id,k是layui.table对象,s是table的实例

  • 修改-在此处增加处理逻辑:当配置了导出的处理函数(exportAction)时,使用自定义的导出处理函数(exportAction),否则使用当前的处理逻辑,如下:

 t.on("click", function () {
     var e = p(this).data("type");
     if (u.exportAction) {
         //使用自定义处理
         u.exportAction(k, s, u, e);
     } else {
     	//使用原处理
         k.exportFile.call(s, u.id, null, e)
     }
 })
  • 由于原文件是压缩格式,修改原文件的如图:
    在这里插入图片描述
    代码:if(u.exportAction){u.exportAction(k,s,u,e);}else{k.exportFile.call(s, u.id, null, e);}

  • 在渲染表格时配置自定义的导出处理函数,直接上代码:

table.render({
    elem: '#LAY-app-content-list',
    url: "/article/query", //数据接口地址
    ,
    title: '文章列表' /*导出表名*/ ,
    toolbar: '#toolbarDemo',
    page: true /*开启分页*/ ,
    limit: 10,
    limits: [10, 15, 20, 25, 30],
    ,
    cols: cols: [[{
        type: "checkbox",
        fixed: "left"
		}, {
        field: "ID",
        width: 100,
        title: "文章ID",
        sort: !0
		}, {
        field: "Title",
        title: "文章标题",
        minWidth: 200,
        edit: 'text' //开户单元格编辑
		}, {
        field: "Category",
        title: "分类"
		}, {
        field: "Author",
        title: "作者",
        width: 120,
		}, {
        field: "CreatedDate",
        title: "创建时间",
        width: 180,
        sort: !0
		}, {
        field: "Status",
        title: "状态",
        templet: "#StatusTpl",
        width: 100,
        align: "center"
		}, {
        title: "操作",
        width: 150,
        align: "center",
        fixed: "right",
        toolbar: "#table-content-list"
		}]]
	,exportDataUrl: layui.setter.base + "json/content/list2.json"   //导出数据接口的地址
	,exportMethod:"post"  //导出数据接口的请求方式
	//自定义导出处理方法
	,exportAction : function (table, tableIns, config, exportType) {
		var selectedData = table.checkStatus(`${config.id}`).data;
		if (selectedData && selectedData.length > 0) {
			//导出选中的数据
			table.exportFile(config.id, selectedData , exportType);
		} else {
			//导出后端接口的数据,
			var querydata = layui.form.val(`${config.id}-queryForm`);  //获取查询form的查询条件参数
			$.ajax({
				type: config.exportMethod || "get",
				url: config.exportDataUrl,
				contentType: "application/json",
				data: querydata,
				dataType: "json",
				headers: {},
				success: function (rspData) {
					// alert(JSON.stringify(rspData));
					table.exportFile(config.id, rspData.data, exportType);
				}, error: function (data) {
					layui.layer.msg("error: " + data.responseText, { icon: 2 });
				}
			})
		}
	
	
	}
});
  • 结语
    也可将此处理逻辑封装到layuijs中,如根据是否配置exportDataUrl来决定是否请求后端接口。可根据自身实际的使用情况进行封装,
  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
如果你使用的是 layui 的 table 组件,可以使用 table.exportFile 方法来实现自定义导出。这个方法允许你传入一个数据数组和一个配置对象,来自定义导出的内容和格式。 以下是一个示例代码,可以将表格数据以 JSON 格式导出: ```javascript // 导出 JSON 文件 function exportJson() { var data = table.cache.myTable; // 获取表格数据 var filename = 'data.json'; // 导出文件名 var content = JSON.stringify(data, null, 2); // 转为格式化后的 JSON 字符串 var blob = new Blob([content], {type: 'text/plain;charset=utf-8'}); // 创建 Blob 对象 saveAs(blob, filename); // 使用 FileSaver.js 下载文件 } // 保存文件的函数,使用 FileSaver.js 库 function saveAs(blob, filename) { if (window.navigator.msSaveOrOpenBlob) { // IE10+ window.navigator.msSaveOrOpenBlob(blob, filename); } else { // Others var a = document.createElement('a'); var url = URL.createObjectURL(blob); a.href = url; a.download = filename; document.body.appendChild(a); a.click(); setTimeout(function() { document.body.removeChild(a); window.URL.revokeObjectURL(url); }, 0); } } ``` 在配置表格时,可以为表格添加一个 “导出按钮,绑定上面的导出函数: ```javascript table.render({ elem: '#myTable', data: data, cols: cols, toolbar: '#toolbar', // 绑定工具栏 defaultToolbar: ['filter', 'exports'], // 显示筛选和导出按钮 done: function() { // 绑定导出按钮事件 $('.layui-table-tool-temp .layui-btn[data-event="exportJson"]').click(exportJson); } }); ``` 这样就可以在表格上方显示一个导出按钮,点击它就可以将表格数据以 JSON 格式导出了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北海山人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值